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

目次

概要

強化されたクライアント認証を使用してaccess_tokenを取得する、
(Client Credentialsグラント種別の代替フロー)

クライアント認証の有無

クライアント認証はオプション。

クライアント認証しない場合、

クライアント認証する場合、

既存のフローのクライアント認証を使用する。

用例の代表的なフロー

用例ではクライアント認証を使用していないケースが多いが、

どうも、

クライアント認証をしないパターンが採用されているらしい。

クライアント認証なし

クライアント認証あり

以下のフローがあるが、

前者はあまりシナリオに適合していないように思う。

仕様(7521)

フレームワーク

Assertion Created by Third Party

STSによってアサーションを取得する。

Self-Issued Assertion

ローカルでアサーションを作成する。

アサーション

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

文脈上

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

できる。

タイプ

クレームセット

以下のクレームが必要。

IDトークンが参考になる。

署名

パラメタ

grant_type

assertion

RFC7523のアサーションを参照。

scope

client_id

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: :認証基盤, :クレームベース認証, :OAuth


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