9.6. SAML v2.0 身份提供程序
红帽构建的 Keycloak 可以根据 SAML v2.0 协议代理身份提供程序。
流程
- 单击菜单中的 Identity Providers。
从
Add provider列表中,选择SAML v2.0。添加身份提供程序
- 输入您的初始配置选项。有关配置选项的更多信息,请参阅 常规 IDP 配置。
| Configuration | 描述 |
|---|---|
| Service Provider Entity ID |
远程身份提供程序用来识别来自此服务提供商请求的 SAML 实体 ID。默认情况下,此设置被设置为 realm 基础 URL < |
| 身份提供程序实体 ID | 用于验证接收 SAML 断言的 Issuer 的实体 ID。如果为空,则不会执行 Issuer 验证。 |
| 单点登录服务 URL | 启动身份验证过程的 SAML 端点。如果您的 SAML IDP 发布 IDP 实体描述符,则在此处指定此字段的值。 |
| 单注销服务 URL | SAML 注销端点。如果您的 SAML IDP 发布 IDP 实体描述符,则在此处指定此字段的值。 |
| Backchannel Logout | 如果您的 SAML IDP 支持返回频道退出,请将此开关切换到 ON。 |
| NameID 策略格式 |
与名称标识符格式对应的 URI 引用。默认情况下,红帽构建的 Keycloak 把它设置为 |
| 主体类型 | 指定 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 Signed 是 ON,要使用的签名算法。请注意,基于 |
| 加密算法 | 加密算法,SAML IDP 用于加密 SAML 文档、断言或 ID。根据此配置的算法,将选择解密 SAML 文档部分的对应解密密钥,并在 realm 密钥中使用加密(ENC)用法。如果没有配置算法,则允许任何支持的算法,并根据 SAML 文档本身中指定的算法选择解密密钥。 |
| SAML 签名密钥名称 |
使用 POST 绑定发送的签名 SAML 文档包含 |
| 强制身份验证 | 用户必须在外部 IDP 中输入其凭证,即使用户已登录。 |
| 验证签名 | 当 ON 时,域需要 SAML 请求和来自外部 IDP 的响应进行数字签名。 |
| 验证 X509 证书 | 红帽公共证书红帽构建的 Keycloak 用于验证 SAML 请求签名以及来自外部 IDP 的响应。 |
| 签名服务提供商元数据 | 在 ON 时,红帽构建的 Keycloak 使用域的密钥对为 SAML 服务提供商元数据描述符 签名。 |
| 传递主题 |
控制红帽构建的 Keycloak 是否将 |
| 属性使用服务索引 | 标识设置为 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,则身份提供程序不会强制实施额外的限制。
| Configuration | 描述 |
|---|---|
| 比较 |
身份提供程序用于评估上下文要求的方法。可用值为 |
| 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
http[s]://{host:port}/realms/{realm-name}/broker/{broker-alias}/endpoint/descriptor
确保您在访问描述符前保存任何配置更改。
9.6.3. SAML 请求中的发送主题 复制链接链接已复制到粘贴板!
默认情况下,指向 SAML 身份提供程序的社交按钮将用户重定向到以下登录 URL:
http[s]://{host:port}/realms/${realm-name}/broker/{broker-alias}/login
http[s]://{host:port}/realms/${realm-name}/broker/{broker-alias}/login
在这个 URL 中添加名为 login_hint 的查询参数,将参数的值作为 Subject 属性添加到 SAML 请求中。如果此查询参数为空,红帽构建的 Keycloak 不会对请求添加主题。
启用 "Pass subject" 选项,以在 SAML 请求中发送主题。