Skip to main content
This page is for Authlete 2.x. For current (3.0) documentation, see this page.

client_secret_jwt によるクライアント認証

概要

client_secret_jwt はクライアント認証方式のひとつです。OpenID Connect Core 1.0, 9. Client Authentication にて定義されています。 トークンリクエストにおいて、クライアントはメッセージ認証コード (MAC; Message Authentication Code) を署名部に含む JWT 形式のアサーションを生成し、リクエストに含めます。そして認可サーバーは、そのアサーションの署名とペイロードを検証し、クライアント認証を行います。 アサーションとして送信する JWT には署名・ペイロードに関していくつかの要件が定められており、認可サーバー側ではこの検証を行う必要があります。 認可サーバーは、client_secret_jwt 方式を用いたクライアント認証の処理を、Authlete に移管することができます。本記事ではこの方式の概要と、Authlete の設定手順について説明します。\ client-secret-jwt_ja
本機能は Authlete 2.0 以降でのみ利用可能になります。

client_secret_jwt の処理

クライアント側と認可サーバー側に必要となる処理は、それぞれ下記の通りです。

クライアント側の処理

client_secret_jwt 方式を用いる場合、クライアントはトークンリクエストに以下のパラメーターを含める必要があります。 client_assertion にはペイロードと署名について以下の要件を満たす JWT を指定します。この JWT の具体例は「JWT アサーションの生成」のセクションをご覧ください。

ペイロード

下記のうち、必須のクレームを含む必要があります。

署名

  • 署名は HMAC-SHA アルゴリズム  (HS256 など) を用いて計算すること
  • 署名計算時にはクライアントシークレットを共通鍵として利用すること

認可サーバー側の処理

認可サーバー側では、リクエストを下記仕様に従って適切に処理することになります。ただし認可サーバーはこれらの処理をすべて Authlete に委譲できるため、ここでは詳細は割愛します。

 Authlete の設定

本セクションでは client_secret_jwt 方式に対応するための設定を説明します。Authlete サービスと、同方式によって認証されるクライアントの、両方の設定が必要です。

Authlete サービスの設定

管理者コンソールから以下のように設定してください。 client-auth-client-secret-jwt_1 認可 タブ

クライアントの設定

クライアントアプリ開発者コンソールにアクセスし、以下のように設定してください。 client-auth-client-secret-jwt_2 基本情報 タブ client-auth-client-secret-jwt_3 認可 タブ

実行例

q 以下は、認可サーバーのトークンエンドポイントにおいて client_secret_jwt によるクライアント認証を行う例です。

JWT アサーションの生成

事前準備として、トークンリクエストに含める client_assertion パラメーターの値 (JWT) を生成します。

JWT ペイロードの準備

まず JSON 形式のペイロードを生成し、ここでは payload.json というファイル名で保存します。

JWT の生成

前述のペイロードと、上記の共通鍵を用いて生成された MAC を、ともに含む JWT を生成します。以下は authlete-jose ライブラリ を利用して JWT を生成する例ですが、mkjose.org サービスなどの他の方法を利用してもかまいません。
結果的に以下のような JWT が得られます。(見やすさを考慮し一部改行してあります。)
この JWT が、クライアントがトークンリクエストの際に用いる client_assertion の値となります。

トークンリクエストの実行

クライアントから認可サーバーへのトークンリクエスト

上記のアサーションを持つクライアントが、認可サーバーに対して以下のトークンリクエストを送信したと仮定します。(見やすさを考慮し一部改行してあります)

認可サーバーから Authlete への API リクエスト

認可サーバーは、 Authlete の /auth/token API に、このリクエストの内容を転送します。(見やすさを考慮し一部改行してあります)

Authlete から認可サーバーへの API レスポンス

Authlete は上記リクエストを処理し、API レスポンスとして、認可サーバーに以下を返却します。(見やすさを考慮し一部改行してあります)

認可サーバーからクライアントへのトークンレスポンス

認可サーバーは “responseContent” から抽出した値を、トークンレスポンスとしてクライアントに返却します。(詳細は割愛)

参考資料

本記事では、Authlete のクライアント認証設定の基本を説明します。
認可サーバーは、private_key_jwt 方式を用いたクライアント認証の処理を、Authlete に移管することができます。本記事ではこの方式の概要と、Authlete の設定手順について説明します。
この記事では、OAuth 2.0 の『クライアント認証』について説明します。
RFC 6749 に記述されているクライアント認証方式のほか、クライアントアサーションやクライアント証明書を用いるクライアント認証方式についても説明します。