「JWT ベースのアクセストークン」の有効化

概要


Authlete には JWT 形式のアクセストークンを発行する機能があります。機能を有効化するには、署名鍵の登録と署名アルゴリズムの指定が必要となります。本記事ではその手順について説明します。


サービス設定の変更


サービス設定の「JWK セットの内容」に JWK セットドキュメントを登録します。手順については以下の記事をご参照ください。


登録後、「トークン」タブに移動し、適切な「アクセストークン署名アルゴリズム」を選択します。たとえば ES256 の署名鍵を登録した場合(上記の記事の例)には、「ES256」を選択します。

設定後、Authlete の発行するアクセストークンは JWT 形式となります。

動作例


以下は /auth/token API の動作例です(一部折り返しています)。"jwtAccessToken" の値、ならびに "responseContent" (トークンレスポンスの内容)の値に含まれる "access_token" の値が JWS signed JWT になっています。

$ curl -s -X POST $AUTHLETE_API/auth/token
 -u $AUTHLETE_KEY:$AUTHLETE_SECRET
 -H 'Content-Type: application/json'
 -d '{"clientId":"249890170368",
  "clientSecret":"pKCYiH3yxWcAkB4IbjoND1jTtbKztMYBt1Cfz8FJVe5mBWbw_5y6W_MHOaItV4
   dYFeQC4ZukjLRJ8yDlMYbWRg",
  "parameters": "grant_type=authorization_code&
    redirect_uri=https://client.example.org/cb/example.com&
    code=azZN1d9d4kttnujX_BhA-rWw2jZ8E0L5t3WQ2cailLc"}' | jq
{
  "type": "tokenResponse",
  "resultCode": "A050001",
  "resultMessage": "[A050001] The token request
   (grant_type=authorization_code) was processed successfully.",
  "accessToken": "oy1Tv4dqMYh9kbpnBBbRWET8Bqq_bfdylkb1O2A8-tI",
  "accessTokenDuration": 86400,
  "accessTokenExpiresAt": 1576574171669,
  "action": "OK",
  "clientId": 249890170368,
  "clientIdAliasUsed": false,
  "grantType": "AUTHORIZATION_CODE",
  "idToken": "eyJraWQiOiIxIiwiYWxnIjoiRVMyNTYifQ.
   eyJzdWIiOiJ0ZXN0dXNlcjAxIiwiYXVkIjpbIjI0OTg5MDE3MDM2OCJdLCJpc3MiOiJodHRwczovL
   2FzLmV4YW1wbGUuY29tIiwiZXhwIjoxNTc2NTc0MTcxLCJpYXQiOjE1NzY0ODc3NzEsIm5vbmNlIj
   oibi0wUzZfV3pBMk1qIn0.rWDeuYqr4KxKcwt658tnebFTLxNy_3wUuDQbCU22bHy9GSfEgdy4vsX
   RSNkWcgYOqaC7fffdQUcaeMl14ucm8A",
  "jwtAccessToken": "eyJraWQiOiIxIiwiYWxnIjoiRVMyNTYifQ.
   eyJzdWIiOiJ0ZXN0dXNlcjAxIiwic2NvcGUiOiJvcGVuaWQiLCJpc3MiOiJodHRwczovL2FzLmV4Y
   W1wbGUuY29tIiwiZXhwIjoxNTc2NTc0MTcxLCJpYXQiOjE1NzY0ODc3NzEsImNsaWVudF9pZCI6Ij
   I0OTg5MDE3MDM2OCIsImp0aSI6Im95MVR2NGRxTVloOWticG5CQmJSV0VUOEJxcV9iZmR5bGtiMU8
   yQTgtdEkifQ.
   KhWMqnVLgIjGEsSKPPkSRt6oEtIsv0EEAyYEO87ycstDPH4A9oOH7Hf68R-NwwnEgDA8bK8YKu1YP
   PxtMciX9A",
  "refreshToken": "t_5SCgAFKqR4YTLMvGqw90q180Y3Tldn3oDyYry9E90",
  "refreshTokenDuration": 864000,
  "refreshTokenExpiresAt": 1577351771669,
  "responseContent": "{\"access_token\":\"eyJraWQiOiIxIiwiYWxnIjoiRVMyNTYifQ.
   eyJzdWIiOiJ0ZXN0dXNlcjAxIiwic2NvcGUiOiJvcGVuaWQiLCJpc3MiOiJodHRwczovL2FzLmV4Y
   W1wbGUuY29tIiwiZXhwIjoxNTc2NTc0MTcxLCJpYXQiOjE1NzY0ODc3NzEsImNsaWVudF9pZCI6Ij
   I0OTg5MDE3MDM2OCIsImp0aSI6Im95MVR2NGRxTVloOWticG5CQmJSV0VUOEJxcV9iZmR5bGtiMU8
   yQTgtdEkifQ.
   KhWMqnVLgIjGEsSKPPkSRt6oEtIsv0EEAyYEO87ycstDPH4A9oOH7Hf68R-NwwnEgDA8bK8YKu1YP
   PxtMciX9A\",
   \"refresh_token\":\"t_5SCgAFKqR4YTLMvGqw90q180Y3Tldn3oDyYry9E90\",
   \"scope\":\"openid\",
   \"id_token\":\"eyJraWQiOiIxIiwiYWxnIjoiRVMyNTYifQ.
   eyJzdWIiOiJ0ZXN0dXNlcjAxIiwiYXVkIjpbIjI0OTg5MDE3MDM2OCJdLCJpc3MiOiJodHRwczovL
   2FzLmV4YW1wbGUuY29tIiwiZXhwIjoxNTc2NTc0MTcxLCJpYXQiOjE1NzY0ODc3NzEsIm5vbmNlIj
   oibi0wUzZfV3pBMk1qIn0.rWDeuYqr4KxKcwt658tnebFTLxNy_3wUuDQbCU22bHy9GSfEgdy4vsX
   RSNkWcgYOqaC7fffdQUcaeMl14ucm8A\",
   \"token_type\":\"Bearer\",
   \"expires_in\":86400}",
  "scopes": [
    "openid"
  ],
  "subject": "testuser01"
}

参考情報


How did we do with this article?