9.6. SAML v2.0 身份提供程序


红帽构建的 Keycloak 可以根据 SAML v2.0 协议代理身份提供程序。

流程

  1. 单击菜单中的 Identity Providers
  2. Add provider 列表中,选择 SAML v2.0

    添加身份提供程序

    Add Identity Provider

  3. 输入您的初始配置选项。有关配置选项的更多信息,请参阅 常规 IDP 配置
Expand
表 9.3. SAML 配置
Configuration描述

Service Provider Entity ID

远程身份提供程序用来识别来自此服务提供商请求的 SAML 实体 ID。默认情况下,此设置被设置为 realm 基础 URL < root>/realms/{realm-name}

身份提供程序实体 ID

用于验证接收 SAML 断言的 Issuer 的实体 ID。如果为空,则不会执行 Issuer 验证。

单点登录服务 URL

启动身份验证过程的 SAML 端点。如果您的 SAML IDP 发布 IDP 实体描述符,则在此处指定此字段的值。

单注销服务 URL

SAML 注销端点。如果您的 SAML IDP 发布 IDP 实体描述符,则在此处指定此字段的值。

Backchannel Logout

如果您的 SAML IDP 支持返回频道退出,请将此开关切换到 ON

NameID 策略格式

与名称标识符格式对应的 URI 引用。默认情况下,红帽构建的 Keycloak 把它设置为 urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

主体类型

指定 SAML 断言的哪个部分将用于识别和跟踪外部用户身份。可以是 Subject NameID 或 SAML 属性(按名称或友好的名称)。subject NameID 值不能与 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient' NameID Policy Format 值一起设置。

主体属性

如果 Principal 类型是 non-blank,此字段指定 identify 属性的 name ("Attribute [Name]")或友好名称("Attribute [Friendly Name]")。

允许创建

允许外部身份提供程序创建新标识符来代表主体。

HTTP-POST 绑定响应

控制 SAML 绑定,以响应外部 IDP 发送的任何 SAML 请求。当 OFF 时,红帽构建的 Keycloak 使用重定向绑定。

AuthnRequest 的 http-POST Binding

控制从外部 IDP 请求身份验证时的 SAML 绑定。当 OFF 时,红帽构建的 Keycloak 使用重定向绑定。

需要 AuthnRequests Signed

ON 时,红帽构建的 Keycloak 使用域的密钥对签署发送到外部 SAML IDP 的请求。

需要签名

指明此服务提供商是否需要经过签名的断言。

需要加密断言

指明此服务提供商是否需要加密的断言。

签名算法

如果 Want AuthnRequests SignedON,要使用的签名算法。请注意,基于 SHA1 的算法已弃用,并可能在以后的发行版本中删除。我们建议使用一些更安全的算法,而不是 192.168.1.0/24 _SHA1。另外,使用 *_SHA1 算法时,如果 SAML 身份提供程序(如红帽构建的 Keycloak 实例在 Java 17 或更高版本上运行)时,验证签名无法正常工作。

加密算法

加密算法,SAML IDP 用于加密 SAML 文档、断言或 ID。根据此配置的算法,将选择解密 SAML 文档部分的对应解密密钥,并在 realm 密钥中使用加密(ENC)用法。如果没有配置算法,则允许任何支持的算法,并根据 SAML 文档本身中指定的算法选择解密密钥。

SAML 签名密钥名称

使用 POST 绑定发送的签名 SAML 文档包含 KeyName 元素中的签名密钥标识,该元素默认包含红帽 Keycloak 密钥 ID 的红帽构建。外部 SAML IDP 可能会预期使用不同的密钥名称。此交换机控制 KeyName 是否包含 KeyName,即 KEY_ID - Key ID。CERT CERT_SUBJECT - 与 realm 密钥对应的证书的主题。Microsoft Active Directory Federation Services 预期 CERT_SUBJECT.* NONE - 红帽构建的 Keycloak 省略了 SAML 信息中的键名称提示。

强制身份验证

用户必须在外部 IDP 中输入其凭证,即使用户已登录。

验证签名

ON 时,域需要 SAML 请求和来自外部 IDP 的响应进行数字签名。

验证 X509 证书

红帽公共证书红帽构建的 Keycloak 用于验证 SAML 请求签名以及来自外部 IDP 的响应。

签名服务提供商元数据

ON 时,红帽构建的 Keycloak 使用域的密钥对为 SAML 服务提供商元数据描述符 签名。

传递主题

控制红帽构建的 Keycloak 是否将 login_hint 查询参数转发到 IDP。Red Hat build of Keycloak 将此字段的值添加到 AuthnRequest 的 Subject 中的 login_hint 参数中,以便目标供应商可以预先填充其登录表单。

属性使用服务索引

标识设置为 request 到远程 IDP 的属性。红帽构建的 Keycloak 会自动将身份提供程序配置中映射的属性添加到自动生成的 SP 元数据文档中。

属性使用服务名称

在自动生成的 SP 元数据文档中公告的一组属性的描述性名称。

您可以通过提供 URL 或指向外部 IDP 实体描述符的 SAML IDP 实体描述符来导入所有配置数据。如果您要连接到红帽构建的 Keycloak 外部 IDP,您可以从 URL < root>/realms/{realm-name}/protocol/saml/descriptor 导入 IDP 设置。此链接是描述 IDP 元数据的 XML 文档。您还可以通过提供指向外部 SAML IDP 的实体描述符要连接的 URL 或 XML 文件来导入所有这些配置数据。

9.6.1. 请求特定的 AuthnContexts

身份提供程序有助于客户端指定验证用户身份的身份验证方法的限制。例如,询问 MFA、Kerberos 身份验证或安全要求。这些限制使用特定的 AuthnContext 标准。客户端可以要求一个或多个条件,并指定身份提供程序如何与请求的 AuthnContext 匹配,或者满足其他等效条件。

您可以通过在 Requested AuthnContext Constraints 部分添加 ClassRefs 或 DeclRefs 来列出服务提供商所需的条件。通常,您需要提供 ClassRefs 或 DeclRefs,因此请检查您的身份提供程序文档。如果没有 ClassRefs 或 DeclRefs,则身份提供程序不会强制实施额外的限制。

Expand
表 9.4. 请求的 AuthnContext 约束
Configuration描述

比较

身份提供程序用于评估上下文要求的方法。可用值为 Exact最小最大、或 Better。默认值为 Exact

AuthnContext ClassRefs

AuthnContext ClassRefs 描述所需条件。

AuthnContext DeclRefs

描述所需条件的 AuthnContext DeclRefs。

9.6.2. SP 描述符

当您访问供应商的 SAML SP 元数据时,在身份提供程序配置设置中查找 Endpoints 项目。它包含一个 SAML 2.0 Service Provider Metadata 链接,它为服务提供商生成 SAML 实体描述符。您可以下载描述符或复制其 URL,然后将其导入到远程身份提供程序中。

此元数据也可以通过进入以下 URL 来公开可用:

http[s]://{host:port}/realms/{realm-name}/broker/{broker-alias}/endpoint/descriptor
Copy to Clipboard Toggle word wrap

确保您在访问描述符前保存任何配置更改。

9.6.3. SAML 请求中的发送主题

默认情况下,指向 SAML 身份提供程序的社交按钮将用户重定向到以下登录 URL:

http[s]://{host:port}/realms/${realm-name}/broker/{broker-alias}/login
Copy to Clipboard Toggle word wrap

在这个 URL 中添加名为 login_hint 的查询参数,将参数的值作为 Subject 属性添加到 SAML 请求中。如果此查询参数为空,红帽构建的 Keycloak 不会对请求添加主题。

启用 "Pass subject" 选项,以在 SAML 请求中发送主题。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat