Table of Contents
本ドキュメントでは、アクセス (リフレッシュ) トークンの有効期間をスコープ単位で制御する方法について解説します。
本機能は Authlete 2.0 以降でのみ利用可能になります。
Authlete 1.1 では、アクセス (リフレッシュ) トークンの有効期間はサービス (認可サーバー) 単位でのみ設定可能な項目でしたが、Authlete 2.0 以降では、スコープ単位でもトークンの有効期間の設定 が可能となりました。
これにより認可サーバーは「write スコープは重要度の高い権限なので、write スコープがリクエストされた場合に払い出されるトークンの有効期間は短くしたい。」といったユースケースにも対応できるようになります。
別記事「トークンの有効期間の計算ロジック」をご覧ください。
本機能を利用するためには、サービス管理画面上でスコープの属性を設定する必要があります。詳細は「スコープの属性機能」をご覧ください。
ここでは、ある 1 つのサービスに 2 つのスコープが設定されている環境において、アクセストークンの有効期間が以下の通り設定されているものとします。
エンティティ | アクセストークンの有効期間(秒) |
---|---|
サービス | 86,400 |
read スコープ | 3,600 |
write スコープ | 600 |
この状況において、クライアントから送信された、スコープの組み合わせが異なる「インプリシットグラントフローの認可リクエスト」に対し、Authlete の /auth/authorization/issue API は以下のレスポンスを返却します。
{
"type": "authorizationIssueResponse",
"accessTokenDuration": 86400,
"responseContent": "https://client.example.org/cb/example.com
#access_token=xbNhif-bsWOPyRasrEFUFurBSQUHnarjv6sMz8cSDjg
&token_type=Bearer
&expires_in=86400
&scope=",
...
}
=> サービスに設定されたアクセストークン有効期間秒数が利用されていることがわかる。
{
"type": "authorizationIssueResponse",
"accessTokenDuration": 3600,
"responseContent": "https://client.example.org/cb/example.com
#access_token=8ihMgxhMf-HYBy-O2rYVlMHEQD7WcvFGUhaXfP3YZHs
&token_type=Bearer
&expires_in=3600
&scope=read",
...
}
=> read スコープに設定されたアクセストークン有効期間秒数が利用されていることがわかる。
{
"type": "authorizationIssueResponse",
"accessTokenDuration": 600,
"responseContent": "https://client.example.org/cb/example.com#access_token=lZ4rjCLlwDvgO2wgOaXhDhNGMhpUE_yGi3pyTPcHFyU
&token_type=Bearer
&expires_in=600
&scope=write",
...
}
=> write スコープに設定されたアクセストークン有効期間秒数が利用されていることがわかる。
{
"type": "authorizationIssueResponse",
"accessTokenDuration":600,
"responseContent": "https://client.example.org/cb/example.com #access_token=3zQNzTiX5MUxO1Gy0ZFfD7mhn3U1Cg3Q15rhjNob6uc
&token_type=Bearer
&expires\_in=600
&scope=read+write,
" ...
}
=> write スコープに設定されたアクセストークン有効期間秒数が利用されていることがわかる。