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

目次

概要

JWT(JWS) Bearer Tokenをアサーションとして使用して、OAuth 2.0のAccess Tokenを要求する方法の定義。

仕様(7521)

フレームワーク

Assertion Created by Third Party

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

    Relying
    Party                     Client                   Token Service
      |                          |                         |
      |                          |  1) Request Assertion   |
      |                          |------------------------>|
      |                          |                         |
      |                          |  2) Assertion           |
      |                          |<------------------------|
      |    3) Assertion          |                         |
      |<-------------------------|                         |
      |                          |                         |
      |    4) OK or Failure      |                         |
      |------------------------->|                         |
      |                          |                         |
      |                          |                         |

Self-Issued Assertion

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

    Relying
    Party                     Client
      |                          |
      |                          | 1) Create
      |                          |    Assertion
      |                          |--------------+
      |                          |              |
      |                          | 2) Assertion |
      |                          |<-------------+
      |    3) Assertion          |
      |<-------------------------|
      |                          |
      |    4) OK or Failure      |
      |------------------------->|
      |                          |
      |                          |

仕様(7523)

JWT(JWS)

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

JWT(JWS)の例

以下を、アクセストークン・リクエストする。

パラメタ

grant_type

urn:ietf:params:oauth:grant-type:jwt-bearer

assertion

前述のJWT(JWS)

scope

リクエスト・レスポンス

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

エラー・レスポンス

{
 "error":"invalid_grant",
 "error_description":"Audience validation failed"
}

クライアント認証

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

JWT(JWS)

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

以下のClaimが必要だが、IDトークンが参考になる。

JWT(JWS)の署名検証により、認証を行う。

JWT(JWS)の例

パラメタ

リクエスト・レスポンス

認可リクエスト・レスポンス

エラー・レスポンス

OAuth 2.0 [RFC6749]で定義されているエラー応答を構成

参考

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