2.2.2. 暗黙的フローおよびハイブリッドフロー

デフォルトでは、JavaScript アダプターは Authorization Code フローを使用します。

このフローでは、Red Hat Single Sign-On サーバーは、認証トークンではなく、承認コードをアプリケーションに返します。JavaScript アダプターは、ブラウザーがアプリケーションにリダイレクトされた後に、アクセストークンとリフレッシュトークンの コード を交換します。

Red Hat Single Sign-On は、Red Hat Single Sign-On で認証に成功した直後にアクセストークンが送信される Implicit フローもサポートしています。これは、コードをトークンと交換する追加のリクエストがないため、標準フローよりもパフォーマンスが向上する可能性がありますが、アクセストークンの有効期限が切れると影響があります。

ただし、URL フラグメントでアクセストークンを送信すると、セキュリティー脆弱性が発生する可能性があります。たとえば、トークンは Web サーバーログやブラウザー履歴によってリークされる可能性があります。

暗黙のフローを有効にするには、Red Hat Single Sign-On 管理コンソールで、クライアントの Implicit Flow Enabled フラグを有効にする必要があります。また、initメソッドに implicit 値を持つパラメーター フロー を渡す必要があります。

keycloak.init({
    flow: 'implicit'
})

注記 1 つは、アクセストークンのみが提供され、更新トークンはありません。そのため、アクセストークンの期限が切れると、アプリケーションが Red Hat Single Sign-On に再度リダイレクトして新しいアクセストークンを取得する必要があります。

Red Hat Single Sign-On は、Hybrid フローにも対応しています。

これは、クライアントが管理コンソールで Standard Flow Enabled フラグおよび Implicit Flow Enabled フラグの両方を有効にしている必要があります。次に、Red Hat Single Sign-On サーバーは、コードとトークンの両方をアプリケーションに送信します。アクセストークンは、コードのアクセスと更新トークンを交換して、すぐに使用できます。暗黙的なフローと同様に、アクセストークンがすぐに利用できるため、ハイブリッドフローはパフォーマンスに適しています。ただし、トークンは URL で依然として送信され、前述のセキュリティーの脆弱性は引き続き適用されます。

Hybrid フローの利点の 1 つは、更新トークンがアプリケーションで利用できることです。

ハイブリッドフローの場合は、パラメーター flow の値 hybridinit メソッドに渡す必要があります。

keycloak.init({
    flow: 'hybrid'
})