Skip to main content
For Authlete 2.x documentation, see 2.x version.

はじめに

本記事では、“RFC 8705 OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens” にて規定されている “Mutual-TLS certificate-bound access tokens” を利用するための、Authlete の設定手順を説明します。
“Mutual-TLS certificate-bound access tokens” は、「TLS クライアント認証」によるクライアント認証とは独立して動作します。「TLS クライアント認証」の設定については以下の記事をご参照ください。

動作のしくみ

mtls-certificate-bound-access-token_ja “Mutual-TLS certificate-bound access tokens” の設定が有効化されている場合、Authlete の API は次の処理を行います。
  • /auth/token API
    • クライアント証明書 (clientCertificate) をリクエストパラメーターとして受け取り、発行するアクセストークンに結びつけます。
    • JWT 形式のアクセストークン が有効化されている場合には、発行するアクセストークンに、クライアント証明書の情報(サムプリント)を含めます。
  • /auth/introspection API
    • アクセストークン (token) とクライアント証明書 (clientCertificate) をリクエストパラメーターとして受け取り、両者が結びついているかを確認します。
  • /auth/introspection/standard API
    • アクセストークン (token) を、リクエストパラメーターのひとつ (parameters) に含まれる値として受け取り、そのトークンに結びついているクライアント証明書の情報(サムプリント)を返却します。
これにより、相互 TLS によってクライアント証明書を提示できたクライアントのみが、そのアクセストークンの所持を証明し、API リクエストに利用できる(言い換えれば、他のクライアントが利用できない)ようになります。

設定

サービス側のアクセストークン設定

Authlete のサービス管理者コンソール にログインし、 「トークン」タブの「アクセストークン」セクションにおいて以下を設定します。 fapi-service-certboundtoken サービス設定の「TLS クライアント証明書を紐付けたアクセストークンのサポート」

クライアント側のアクセストークン設定

Authlete のクライアントアプリ開発者コンソール にアクセスし、 「基本情報」タブにおいて以下を設定します。 fapi-client-certboundtoken クライアント設定の「TLS クライアント証明書を紐付けたアクセストークンの使用」 以上により、“Mutual-TLS certificate-bound access tokens” が利用可能となります。

実行例

以下は設定後の、各 API の実行例です。(読みやすさのため折り返しています)

/auth/token API

リクエスト

認可サーバーはクライアントとの相互 TLS 接続から得られたクライアント証明書を “clientCertificate” の値として指定し、Authlete にリクエストを送信します。

レスポンス

クライアント証明書に結びつけられたアクセストークンが発行されます。
JWT 形式のアクセストークンの場合には、以下のようなアクセストークンになります。
このアクセストークンのペイロード部には、以下のように、証明書のサムプリントが含まれます。

/auth/introspection API

リクエスト

リソースサーバーはクライアントとの相互 TLS 接続から得られたクライアント証明書を “clientCertificate” の値として指定し、Authlete にリクエストを送信します。

レスポンス

アクセストークン (token) とクライアント証明書 (clientCertificate) の結びつきが確認できた場合には、以下のようなレスポンスが返却されます。このレスポンスには、クライアント証明書のサムプリント(certificateThumbprint) が含まれています。

/auth/introspection/standard API

リクエスト

リソースサーバーは認可サーバーのトークンイントロスペクションエンドポイントに、対象のアクセストークンを送信します。認可サーバーはそのリクエスト内容を Authlete に転送します。

レスポンス

アクセストークンに結びつくクライアント証明書が確認できた場合には、Authlete はその証明書のサムプリントを含む responseContent を返却します。認可サーバーはこの responseContent をリソースサーバーに、トークンイントロスペクションエンドポイントからのレスポンスとして返却します。