13.4. オフラインアクセス

オフラインアクセスは、「OpenID Connect 仕様」に記載の機能です。ログイン中に、クライアントアプリケーションは、従来の更新トークンの代わりにオフライントークンを要求します。アプリケーションは、このオフライントークンをデータベースまたはディスクに保存し、ユーザーがログアウトした場合でも後で使用できます。これは、ユーザーがオンラインでない場合でも、ユーザーの代わりに「オフライン」アクションを実行する必要がある場合に有効です。この例は、毎夜ごとの一部のデータの定期的なバックアップです。

アプリケーションは、一部のストレージ (通常はデータベース) でオフライントークンを永続化してから、これを使用して Red Hat Single Sign-On サーバーから新しいアクセストークンを取得します。

従来の更新トークンとオフライントークンの違いは、オフライントークンはデフォルトで期限切れになることはありませんが、SSO Session Idle timeout および SSO Session Max lifespan の影響は受けません。オフライントークンは、ユーザーのログアウトまたはサーバーを再起動しても有効です。ただし、デフォルトでは、少なくても 30 日に 1 回、更新トークンのアクションにオフライントークンを使用する必要があります (この値である Offline Session Idle timeout は、Realm SettingsTokens タブで管理コンソールで変更できます)。さらに、Offline Session Max Limited オプションを有効にすると、更新トークンにオフライントークンを使用するかどうかに関わらず、オフライントークンは 60 日後に期限切れになります (この値である Offline Session Max は、レルム設定の Tokens タブで管理コンソールでも変更できます)。また、Revoke refresh tokens オプションを有効にすると、各オフライントークンを一度に使用できます。したがって、更新後、これまでのトークンではなく、更新応答から DB に新しいオフライントークンを保存する必要があります。

ユーザーは、User Account Service 内で付与されたオフライントークンを表示し、取り消すことができます。管理ユーザーは、特定のユーザーの Consents タブで、管理コンソールで各ユーザーのオフライントークンを取り消すことができます。管理者は、各クライアントの Offline Access タブで発行されたすべてのオフライントークンを表示することもできます。オフライントークンの取り消しは、失効ポリシーを設定して取り消すことができます。

オフライントークンを発行できるようにするには、レルムレベルのロール offline_access のロールマッピングが必要です。クライアントには、そのスコープにそのロールが必要です。最後に、クライアントに 任意のクライアントスコープ として offline_access クライアントスコープを追加する必要があります。これはデフォルトで行われます。

クライアントは、承認要求を Red Hat Single Sign-On に送信するときに scope=offline_access パラメーターを追加することでオフライントークンを要求できます。Red Hat Single Sign-On OIDC クライアントアダプターは、アプリケーションのセキュアな URL にアクセスするために使用する場合に、このパラメーターを自動的に追加します (例: http://localhost:8080/customer-portal/secured?scope=offline_access)。認証要求の本文に scope=offline_access を追加する場合は、Direct Access Grant および Service Accounts もオフライントークンをサポートします。