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 の値 hybrid を init メソッドに渡す必要があります。
keycloak.init({
flow: 'hybrid'
})