マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

クライアント認証

以下は、既定のクライアント認証が「無い場合」と「有る場合」で場合分けした概要説明。

(既定の)クライアント認証なしの場合

概要

事前に信頼関係を構築できるシステムからユーザによる認証・認可手順なしに直接Access Tokenを取得する。

フロー

JWT(JWS)作成のための証明書を生成 or 取得する。

(既定の)クライアント認証ありの場合

概要

以下に(既定の)クライアント認証をしてAccess Tokenを取得する。

フロー

などのユースケースのフローがある。

※ 仕様として定義されているのは、Tokenエンドポイントに対するリクエスト部のみ。

仕様(7521)

フレームワーク

ココとリンクしている。

Assertion Created by Third Party

こちらも、用例では紹介されていないが、
Authorization Server(STS)によってAssertionを生成する。

Self-Issued Assertion

ローカルでAssertionを生成する。

アサーション

これを使ってアクセストークン・リクエストする。

文脈上

この文脈上でのアサーションは、

できる。

タイプ

クレームセット

以下のクレームが必要。

署名

パラメタ

grant_type

scope

要求された範囲は、OAuth 2.0 [RFC6749]の3.3節に記述されているとおり。

client_id

パラメタに依存するクライアント認証の形式が使用されている場合にのみ必要。

assertion

client_assertion_type

client_assertion

リクエスト・レスポンス

アクセストークン・リクエスト

アクセストークン・レスポンス

仕様中に明記なし。

エラー・レスポンス

セキュリティに関する考慮事項

仕様(7523)

RFC 7521のアサーションにJWT(JWS)アサーションを使用したもの。

JWT(JWS)アサーション

これを使ってアクセストークン・リクエストする。

ペイロード(クレームセット)

JWT(JWS)の例

パラメタ

リクエスト・レスポンス

アクセストークン・リクエスト

アクセストークン・レスポンス

仕様中に明記がないが、Googleでのレスポンスは以下の通り。

{
  "access_token":"XXXXXXXXXX",
  "token_type":"bearer",
  "expires_in":nnnnn
}

※ ポイント : refresh_tokenを返さない。

エラー・レスポンス

仕様(7521)のエラー・レスポンスと同じ。

署名アルゴリズム

本仕様中に記載はないが、コチラ?を参考にするとイイ。

参考

RFC 7521, 7522, 7523

用例

Googleの例

以下を見ると、

通常のOAuth 2.0の

以外に、

クライアント証明書(pfx形式の電子証明書)を使って、
サービスアカウントで認証する方法がある模様。

ちなみに、ここでは、Google.Apis.Analytics Client Libraryに
処理がラッピングされていたため。詳細が不明だったが、

以下を見ると、このClient Libraryの中では、JWTが使用されている模様。

これが、

「JWT bearer token authorizationグラント種別」

の用例である模様。

上記のサイトには、

Service Accounts = JWT Bearer Token Profile

であることが明記されている。

Microsoft (AzureAD) の例

Googleと同様に、以下を見ると、

通常のOAuth 2.0の

以外に、

「JWT bearer token authorizationグラント種別」

をサポートしている模様。

ただし、処理は、ADAL(Active Directory Authentication Library)
にラップされているためJWT作成処理の詳細などを見ることは出来ない。

Salesforceの例

以下のQiita記事を参照すると、Salesforceは、

の2つのフローをサポートしている模様。

原理はほぼ同じで、SAMLよりJWTのほうが動作環境的な制約は少ないとのこと。


Tags: :IT国際標準, :認証基盤, :クレームベース認証, :OAuth


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS