OAuthのoffline_accessについて
少し前ですが、OpenID Connectのbitbuckeetでoffline_accessについての議論がされていたので、まとめておきます。
Googleの場合
offline access の定義
- refresh tokenが発行されるのがoffline。
- 特にoffline accessを要求しない限り、デフォルトではonline accessを要求したものと見なされる。
- online accessの場合はrefresh tokenは発行されない。
- refresh tokenはユーザーがrevokeするまで有効。
auto approval
- 一度ApproveされたClientに対しては、accessがrevokeされるまでは次回以降のAuthorization Request時の同意画面はスキップされる。
- 同意画面がスキップされる場合、refresh tokenは発行されない。
promptとaccess_type
- Authorization Request時にprompt=trueというパラメーターを指定すると、auto approvalを無効化し、ユーザーに同意画面を見せることができる。
- 同様にaccess_type=offlineを指定すると、offline accessを要求できる。
- access_type=offlineを指定した場合、初回同意時にのみrefresh tokenが発行される。
- それ以降もrefresh tokenが必要な場合は、prompt=trueとaccess_type=offlineを同時に指定すること。
AOLの場合
offline accessの定義
- デフォルトではcode flowでは常にrefresh tokenが返される。
- refresh tokenはユーザーがログアウトするまで有効。
- ユーザーがログアウトしても有効なrefresh tokenが欲しい場合は、scopeにoffline_accessを指定する。
auto approval
- ユーザーが明示的にチェックボックスにチェックを入れた場合のみ、次回以降の同意画面がスキップされる。
- 同意画面がスキップされるケースでも、offline_accessを要求することができる。
ところでこのIssue、まだopenですね。