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
レルムのプロパティーで、アイデンティティープロバイダー
に移動し、新しい 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 ブリッジを提供することもできます。