Skip to main content

Documentation Index

Fetch the complete documentation index at: https://developers.authlete.com/llms.txt

Use this file to discover all available pages before exploring further.

はじめに

本ドキュメントでは、アクセス (リフレッシュ) トークンの有効期間をスコープ単位で制御する方法について解説します。
本機能は Authlete 2.0 以降でのみ利用可能になります。

スコープ単位でのトークンの有効期間設定

Authlete 1.1 では、アクセス (リフレッシュ) トークンの有効期間はサービス (認可サーバー) 単位でのみ設定可能な項目でしたが、Authlete 2.0 以降では、スコープ単位でもトークンの有効期間の設定が可能となりました。 これにより認可サーバーは「write** スコープは重要度の高い権限なので、write **スコープがリクエストされた場合に払い出されるトークンの有効期間は短くしたい。」といったユースケースにも対応できるようになります。

トークンの有効期間の計算ロジック

別記事「トークンの有効期間の計算ロジック」をご覧ください。

設定

本機能を利用するためには、サービス管理画面上でスコープの属性を設定する必要があります。詳細は「スコープの属性機能」をご覧ください。 token-duration-per-scope_1

実行例

ここでは、ある 1 つのサービスに 2 つのスコープが設定されている環境において、アクセストークンの有効期間が以下の通り設定されているものとします。
エンティティアクセストークンの有効期間(秒)
サービス86,400
read スコープ3,600
write スコープ600
この状況において、クライアントから送信された、スコープの組み合わせが異なる「インプリシットグラントフローの認可リクエスト」に対し、Authlete の /auth/authorization/issue API は以下のレスポンスを返却します。

1. どのスコープもリクエストされなかった場合

{
    "type": "authorizationIssueResponse",
    "accessTokenDuration": 86400,
    "responseContent": "https://client.example.org/cb/example.com
        #access_token=xbNhif-bsWOPyRasrEFUFurBSQUHnarjv6sMz8cSDjg
        &token_type=Bearer
        &expires_in=86400
        &scope=",
    ...
}
=> サービスに設定されたアクセストークン有効期間秒数が利用されていることがわかる。

2. read スコープがリクエストされた場合

{
    "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 スコープに設定されたアクセストークン有効期間秒数が利用されていることがわかる。

3. write スコープがリクエストされた場合

{
    "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 スコープに設定されたアクセストークン有効期間秒数が利用されていることがわかる。

4. read スコープと 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 スコープに設定されたアクセストークン有効期間秒数が利用されていることがわかる。