オフラインアクセス (Offline access) とは?
オフラインアクセス (Offline access) の概念は、文脈によって異なる場合があります。本記事では、OAuth 2.0 と OpenID Connect (OIDC) の仕様に焦点を当てます。この文脈において、オフラインアクセス (Offline access) は、クライアントがユーザーの再認証を必要とせずに リフレッシュ トークン (refresh tokens) を使用して新しい アクセス トークン (access tokens) を取得できるようにします。この機能は特に、長期間のセッションやより良いユーザーエクスペリエンスに役立ちます。
なお、OAuth 2.0 は「オフラインアクセス (Offline access)」という用語を明示的に定義していません。その代わりに、新しいアクセス トークン (access tokens) を取得するためのリフレッシュ トークン (refresh tokens) の使用を指定しています。しかし、「オフラインアクセス (Offline access)」(offline_access
スコープと共に)は業界内でこの機能を指す用語として広く採用されており、 OpenID Connect (OIDC) 仕様で正式に定義されています。
オフラインアクセス (Offline access) はどのように機能しますか?
簡単のため、OAuth 2.0 の用語である 承認リクエスト (authorization request) および 承認サーバー (authorization server) を使用して、オフラインアクセス (Offline access) がどのように機能するかを説明します。OIDCにおける代替用語は、それぞれ 認証リクエスト (authentication request) および OpenID Provider (OP) です。
オフラインアクセス (Offline access) を活用するためには、主に2つのステップがあります:
-
オフラインアクセス (Offline access) の要求: クライアント (client) が承認リクエスト (authorization request) を承認サーバー (authorization server) に送信する際、
offline_access
スコープを含めてオフラインアクセス (Offline access) を要求します。このスコープは、クライアントがアクセス トークン (access tokens) と一緒にリフレッシュ トークン (refresh tokens) を取得したいことを示します。オフラインアクセス (Offline access) の対応は承認サーバー (authorization server) によって異なり、承認サーバー (authorization server)がそれをサポートしていない場合、
offline_access
スコープを無視することがあります。このスコープの利用前に、承認サーバー (authorization server) のドキュメントを参照して互換性を確認してください。 -
リフレッシュ トークン (refresh token) の使用: OAuth 2.0 認可 (oauth 2.0 grant) が完了すると、クライアントは リフレッシュ トークン (refresh tokens) と共に アクセス トークン (access tokens) を受け取る必要があります。クライアントはリフレッシュ トークン (refresh tokens) を安全に保存し、現在のアクセス トークン (access tokens) が期限切れになったときに新しいアクセス トークン (access tokens) を取得するために、 トークンリクエスト (token request) を承認サーバー (authorization server) に送信することができます。
オフラインアクセス (Offline access) の詳細な例については、 リフレッシュ トークン (refresh tokens) の記事を参照してください。
セキュリティに関する考慮事項
オフラインアクセス (Offline access) のセキュリティへの影響は、リフレッシュ トークン (refresh tokens) に似ています。詳細については、リフレッシュ トークン (refresh tokens) の セキュリティに関する考慮事項 のセクションを参照してください。