9.6. SAML v2.0 身份提供程序
红帽构建的 Keycloak 可以根据 SAML v2.0 协议代理身份提供程序。
流程
- 单击菜单中的 Identity Providers。
从
Add provider
列表中,选择SAML v2.0
。添加身份提供程序
- 输入您的初始配置选项。有关配置选项的更多信息,请参阅 常规 IDP 配置。
配置 | 描述 |
---|---|
服务提供程序实体 ID |
远程身份提供程序用来识别来自此服务提供商请求的 SAML 实体 ID。默认情况下,此设置设置为 realm base URL < |
身份提供程序实体 ID | 用于验证收到 SAML 断言的颁发者的实体 ID。如果为空,则不会执行 Issuer 验证。 |
单点登录服务 URL | 启动身份验证过程的 SAML 端点。如果您的 SAML IDP 发布 IDP 实体描述符,则会在那里指定此字段的值。 |
单个 Logout Service URL | SAML 注销端点。如果您的 SAML IDP 发布 IDP 实体描述符,则会在那里指定此字段的值。 |
Backchannel Logout | 如果您的 SAML IDP 支持返回频道注销,请将这个开关切换到 ON。 |
NameID 策略格式 |
与名称标识符格式对应的 URI 引用。默认情况下,红帽构建的 Keycloak 把它设置为 |
主体类型 | 指定 SAML 断言中的哪些部分将用于识别和跟踪外部用户身份。可以是 Subject NameID 或 SAML 属性(按名称或友好名称)。主题 NameID 值不能与 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient' NameID Policy Format 值一起设置。 |
主体属性 | 如果主体类型是 non-blank,此字段指定识别属性的名称("Attribute [Name]")或 friendly name ("Attribute [Friendly Name]")。 |
允许创建 | 允许外部身份提供程序创建新标识符来代表主体。 |
HTTP-POST 绑定响应 | 控制 SAML 绑定,以响应外部 IDP 发送的任何 SAML 请求。当 OFF 时,红帽构建的 Keycloak 使用重定向绑定。 |
AuthnRequest 的 HTTP-POST Binding | 控制当从外部 IDP 请求身份验证时的 SAML 绑定。当 OFF 时,红帽构建的 Keycloak 使用重定向绑定。 |
want AuthnRequests Signed | 在 ON 时,红帽构建的 Keycloak 使用域的密钥对签署发送到外部 SAML IDP 的请求。 |
want Assertions Signed | 指明此服务提供商是否需要签名的 Assertion。 |
want Assertions Encrypted | 指明此服务提供商是否需要加密的 Assertion。 |
签名算法 |
如果 Want AuthnRequests Signed 为 ON,则使用签名算法。请注意,基于 |
加密算法 | SAML IDP 用于加密 SAML 文档、断言或 ID 的加密算法。解密 SAML 文档部分的对应解密密钥将根据这种配置的算法进行选择,并应该可用于加密(ENC)使用的域密钥。如果没有配置算法,则允许任何支持的算法,并根据 SAML 文档本身中指定的算法选择解密密钥。 |
SAML 签名密钥名称 |
使用 POST 绑定发送的签名 SAML 文档包含 |
强制身份验证 | 用户必须在外部 IDP 中输入其凭证,即使用户已经登录。 |
验证签名 | 当 ON 时,域要求 SAML 请求和来自外部 IDP 的响应进行数字签名。 |
元数据描述符 URL |
身份提供程序发布 |
使用元数据描述符 URL |
在 ON 时,验证签名的证书会自动从
当选项为 OFF 时, |
验证 X509 证书 |
当使用 |
签名服务提供商元数据 | 在 ON 时,红帽构建的 Keycloak 使用域的密钥对为 SAML 服务提供商元数据描述符 签名。 |
传递主题 |
控制红帽构建的 Keycloak 是否将 |
属性使用服务索引 | 标识设置为请求到远程 IDP 的属性。红帽构建的 Keycloak 会自动将身份提供程序配置中映射的属性添加到自动生成的 SP 元数据文档中。 |
属性使用服务名称 | 自动生成的 SP 元数据文档中公告的属性集合的描述性名称。 |
您可以通过提供 URL 或指向外部 IDP 实体描述符的 URL 或文件来导入所有配置数据。如果您要连接到红帽构建的 Keycloak 外部 IDP,您可以从 URL < root>/realms/{realm-name}/protocol/saml/descriptor
导入 IDP 设置。这个链接是一个 XML 文档,描述了有关 IDP 的元数据。您还可以通过提供指向外部 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 Descriptor 复制链接链接已复制到粘贴板!
当您访问供应商的 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 请求中发送主题。