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 配置
配置描述

服务提供商实体 ID

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

身份提供程序实体 ID

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

单点登录服务 URL

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

工件服务 URL

SAML 工件解析端点。如果您的 SAML IDP 发布 IDP 实体描述符,则会在其中指定此字段的值。

单 Logout 服务 URL

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

Backchannel Logout

如果您的 SAML IDP 支持频道注销,请将此开关切换为 ON

NameID 策略格式

与名称标识符格式对应的 URI 引用。默认情况下,Red Hat build of 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 类型不是空的,此字段指定了名称("Attribute [Name]")或识别属性的友好名称("Attribute [Friendly Name]")。

允许创建

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

http-POST 绑定响应

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

ARTIFACT 绑定响应

控制 SAML 绑定,以响应外部 IDP 发送的任何 SAML 请求。当 OFF 时,红帽构建的 Keycloak 会评估 HTTP-POST Binding Response 配置。

AuthnRequest 的 http-POST Binding

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

Want AuthnRequests Signed

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

想要指定注册

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

需要被加密

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

签名算法

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

加密算法

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

SAML 签名密钥名称

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

强制身份验证

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

验证签名

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

元数据描述符 URL

身份提供程序发布 IDPSSODescriptor 元数据的外部 URL。当点 Reload keysImport keys 操作时,这个 URL 用于下载身份提供程序证书。

使用元数据描述符 URL

ON 时,验证签名的证书会自动从 元数据描述符 URL 下载,并缓存在红帽构建的 Keycloak 中。SAML 供应商可以通过两种不同的方式验证签名。如果请求了特定证书(通常在 POST 绑定中),且它不在缓存中,则会自动从 URL 刷新证书。如果请求所有证书来验证签名(REDIRECT 绑定)只有在最大缓存时间后才进行刷新(请参阅所有供应商配置指南中的 public-key-storage spi)。也可以使用身份提供程序页面中的操作 Reload Keys 来手动更新缓存。

当选项为 OFF 时,使用 Validating X509 Certificates 中的证书来验证签名。

验证 X509 证书

当使用 元数据描述符 URLOFF 时,红帽构建的 Keycloak 用来验证 SAML 请求的签名和来自外部 IDP 的响应。可以使用逗号(、)输入多个证书。单击身份提供程序页面中的 Import Keys 操作,可以从 元数据描述符 URL 重新导入证书。此操作在 metadata 端点中下载当前证书,并将其分配给此选项中的配置。您需要点 Save 来一定存储重新导入的证书。

为服务提供商元数据签名

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

传递主题

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

属性消耗服务索引

标识设置为请求到远程 IDP 的属性。Red Hat build of Keycloak 会自动将身份提供程序配置中映射的属性添加到自动生成的 SP 元数据文档中。

属性消耗服务名称

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

您可以通过提供指向外部 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 来列出 Service Provider 需要的条件。通常,您需要提供 ClassRefs 或 DeclRefs,因此请检查您的身份提供程序文档支持哪些值。如果没有 ClassRefs 或 DeclRefs,则身份提供程序不会强制执行额外的限制。

Expand
表 9.4. Requested AuthnContext Constraints
Configuration描述

比较

身份提供程序用于评估上下文要求的方法。可用值包括 ExactMinimumMaximum 或 Better 。默认值为 Exact

AuthnContext ClassRefs

AuthnContext ClassRefs 描述所需的标准。

AuthnContext DeclRefs

AuthnContext DeclRefs 描述所需的标准。

9.6.2. SP Descriptor

当您访问供应商的 SAML SP 元数据时,请在身份提供程序配置设置中查找 Endpoints 项。它包含 SAML 2.0 服务提供商元数据 链接,它为服务提供商生成 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