3.4. OIDC SAML アイデンティティーブローカー
アイデンティティープロバイダーが OpenID Connect を実装しておらず、従来の XML ベースの SAML2.0 SSO プロトコルのみを実装している場合は、quarkus-oidc が OIDC アダプターとして使用されるのと同様に、Quarkus を SAML 2.0 アダプターとして使用することはできません。
ただし、Keycloak、Okta、Auth0、Microsoft ADFS などの多くの OIDC プロバイダーは、OIDC から SAML 2.0 へのブリッジを提供しています。OIDC プロバイダーで SAML 2.0 プロバイダーへのアイデンティティーブローカー接続を作成し、quarkus-oidc を使用してこの SAML 2.0 プロバイダーに対してユーザーを認証し、OIDC プロバイダーが OIDC と SAML 2.0 の通信を調整することができます。Quarkus エンドポイントに関しては、同じ Quarkus Security、OIDC API、@Authenticated、SecurityIdentity などのアノテーションなどを引き続き使用できます。
たとえば、Okta が SAML 2.0 プロバイダーであり、Keycloak が OIDC プロバイダーであるとします。ここでは、Keycloak をOkta SAML 2.0 プロバイダーと仲介するように設定する方法を説明する一般的なシーケンスを示します。
まず、Okta Dashboard/Applications に新しい SAML2 インテグレーションを作成します。
たとえば、OktaSaml という名前を付けます。
次に、Keycloak SAML ブローカーエンドポイントを指すように設定します。この時点で、Keycloak レルムの名前 (例: quarkus) を知っておく必要があります。Keycloak SAML ブローカーのエイリアスが saml であると仮定すると、エンドポイントアドレスを http:localhost:8081/realms/quarkus/broker/saml/endpoint として入力します。サービスプロバイダー (SP) エンティティー ID を http:localhost:8081/realms/quarkus として入力します。ここで、http://localhost:8081 は Keycloak ベースアドレス、saml はブローカーエイリアスです。
次に、この SAML インテグレーションを保存し、そのメタデータ URL をメモします。
次に、Keycloak に SAML プロバイダーを追加します。
まず、通常どおりに、新しいレルムを作成するか、既存のレルムを Keycloak にインポートします。この場合、レルム名は quarkus にする必要があります。
次に、quarkus レルムのプロパティーで、Identity Providers に移動し、新しい SAML プロバイダーを追加します。
エイリアスは saml に設定され、Redirect URI は http:localhost:8081/realms/quarkus/broker/saml/endpoint、Service provider entity ID は http:localhost:8081/realms/quarkus であることに注意してください。これらは、前の手順で Okta SAML 統合を作成するときに入力した値と同じです。
最後に、前の手順の最後に書き留めた Okta SAML 統合メタデータ URL を指すように Service entity descriptor を設定します。
次に、必要に応じて、Authentication/browser/Identity Provider Redirector config に移動し、Alias と Default Identity Provider の両方のプロパティーを saml に設定して、この Keycloak SAML プロバイダーをデフォルトプロバイダーとして登録できます。デフォルトのプロバイダーとして設定しない場合は、認証時に Keycloak は次の 2 つのオプションを提供します。
- SAML プロバイダーで認証する
- 名前とパスワードで Keycloak に直接認証する
ここで、Quarkus OIDC web-app アプリケーションを、Keycloak quarkus レルム quarkus.oidc.auth-server-url=http://localhost:8180/realms/quarkus を指すように設定します。次に、Keycloak OIDC および Okta SAML 2.0 プロバイダーによって提供される OIDC から SAML へのブリッジを使用して、Quarkus ユーザーを Okta SAML 2.0 プロバイダーに認証する準備が整います。
Keycloak の場合と同様に、他の OIDC プロバイダーを設定して SAML ブリッジを提供することもできます。