For Authlete 2.x documentation, see 2.x version.
概要
Authlete には JWT 形式のアクセストークンを発行する機能があります。本記事では、この機能を有効化する方法と、アクセストークンに追加のクレームを指定する方法について説明します。本機能は Authlete 2.1 以降で利用可能です。
機能の有効化
サービス設定 の「JWK セットの内容」に JWK セットドキュメントを登録します。手順については以下の記事をご参照ください。 登録後、「トークン」タブに移動し、適切な「アクセストークン署名アルゴリズム」を選択します。たとえば ES256 の署名鍵を登録した場合(上記の記事の例)には、「ES256」を選択します。
追加のプロパティをアクセストークンに埋め込む
任意の Key/Value の組をアクセストークンに埋め込むには 2 つの方法があります。- Extra Properties 機能を利用して文字列の値を追加する
- jwtAtClaims パラメーターを利用して任意のクレームを追加する
jwtAtClaims パラメーターは Authlete 2.3 以降で利用可能です。
1. Extra Properties 機能を利用して文字列の値を追加する
Extra Properties を用いると、認可サーバーは任意のプロパティをアクセストークンや認可コードに関連づけることができます。この機能を JWT 形式のアクセストークンに用いると、関連付けたプロパティのうち、クライアントに開示されるよう指定した(“hidden”:false の)ものが、カスタムクレームとしてアクセストークンに含まれます。リソースサーバーはこれらのクレームを抽出して利用できるようになります。動作例
以下は、JWT 形式のアクセストークンを発行するよう Authlete サービスを設定した場合の /auth/token API の動作例です。またこの例では Extra Properties を用いた場合の出力を示しています(一部折り返しています)。 “jwtAccessToken” の値、ならびに “responseContent” (トークンレスポンスの内容)の値に含まれる “access_token” の値が JWS signed JWT になっています。- リクエスト
- レスポンス
- ヘッダー
- ペイロード
2. jwtAtClaims パラメーターを利用して任意のクレームを追加する
jwtAtClaims リクエストパラメーターを用いると、JSON オブジェクトを JWT アクセストークンのクレームとして追加できます。このパラメーターは下記の Authlete API へのリクエスト時に利用可能です。- /auth/authorization/issue
- /auth/token/issue
- /auth/token/create
- /backchannel/authentication/complete
- /device/complete
動作例
以下は、/auth/authorization/issue API へのリクエストのパラメーターのひとつに jwtAtClaims を用いる例です。JWT ベースのアクセストークンと識別子型アクセストークンの関係
Authlete のトークン発行エンドポイントでは、アクセストークンの発行に成功した場合、ユーザーに応答する responseContent のほかに、以下のプロパティが応答されます。- accessToken
- jwtAccessToken (JWT ベースのトークンが発行するよう構成されている場合、responseContent の access_token と同一)