3.4. OIDC SAML 身份代理


如果您的身份提供程序没有实现 OpenID Connect,而只有旧的基于 XML 的 SAML2.0 SSO 协议,则无法将 Quarkus 用作 SAML 2.0 适配器,类似于 quarkus-oidc 如何用作 OIDC 适配器。

但是,许多 OIDC 供应商,如 Keycloak、Okta、Auth0 和 Microsoft ADFS 为 SAML 2.0 网桥提供 OIDC。您可以在 OIDC 供应商中创建到 SAML 2.0 供应商的身份代理连接,并使用 quarkus-oidc 验证您的用户到此 SAML 2.0 供应商,并具有 OIDC 供应商协调 OIDC 和 SAML 2.0 通信。至于 Quarkus 端点,他们可以继续使用相同的 Quarkus Security、OIDC API、注释,如 @AuthenticatedSecurityIdentity 等。

例如,假设 Okta 是您的 SAML 2.0 供应商,Keycloak 是您的 OIDC 供应商。以下是如何使用 Okta SAML 2.0 供应商将 Keycloak 配置为代理的典型序列。

首先,在 Okta Dashboard/Applications 中创建一个新的 SAML2 集成:

Okta Create SAML Integration

例如,将其命名为 OktaSaml

Okta SAML 常规设置

接下来,将其配置为指向 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 是代理别名:

Okta SAML 配置

接下来,保存此 SAML 集成并记录其元数据 URL:

Okta SAML 元数据

接下来,在 Keycloak 中添加 SAML 供应商:

首先,照常创建新域或将现有域导入到 Keycloak。在这种情况下,域名必须是 quarkus

现在,在 quarkus 域属性中,导航到 Identity Providers 并添加新的 SAML 供应商:

Keycloak 添加 SAML 供应商

请注意,别名被设置为 samlRedirect URIhttp://localhost:8081/realms/quarkus/broker/saml/endpointService provider entity IDhttp://localhost:8081/realms/quarkus,这些值与您在上一步中创建 Okta SAML 集成时输入的值相同。

最后,设置 Service entity descriptor 以指向上一步末尾的 Okta SAML 集成元数据 URL。

接下来,您可以导航到 Authentication/browser/Identity Provider Redirector config,将 Alias 和 Default Identity Provider 属性注册为默认提供程序,并将 AliasDefault Identity Provider 属性设为 saml。如果您没有将其配置为默认供应商,在身份验证时提供 2 个选项:

  • 使用 SAML 供应商进行身份验证
  • 直接使用名称和密码向 Keycloak 进行身份验证

现在,将 Quarkus OIDC web-app 应用程序配置为指向 Keycloak quarkus realm quarkus.oidc.auth-server-url=http://localhost:8180/realms/quarkus。然后,您已准备好使用 OIDC 到 SAML 网桥(由 Keycloak OIDC 和 Okta SAML 2.0 供应商)向 Okta SAML 2.0 供应商验证 Quarkus 用户。

您可以配置其他 OIDC 供应商,以提供与为 Keycloak 执行的方式相似的 SAML 网桥。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.