9.6. SAML v2.0 身份提供程序
红帽构建的 Keycloak 可以根据 SAML v2.0 协议代理身份提供程序。
流程
- 在菜单中,单击 Identity Providers。
从
Add provider
列表中,选择SAML v2.0
。添加身份提供程序
- 输入您的初始配置选项。有关配置选项的更多信息,请参阅 常规 IDP 配置。
配置 | 描述 |
---|---|
服务提供商实体 ID |
远程身份提供程序用来识别来自此服务提供商的请求的 SAML 实体 ID。默认情况下,此设置设置为 realm 基础 URL < |
身份提供程序实体 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 把它设置为 |
主体类型 | 指定 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 Signed 为 ON,要使用的签名算法。请注意,基于 |
加密算法 | 加密算法,供 SAML IDP 用于 SAML 文档、断言或 ID 加密。将根据此配置的算法选择解密 SAML 文档部分的对应解密密钥,并应在用于加密(ENC)使用的域密钥中使用。如果没有配置算法,则允许任何支持的算法,并根据 SAML 文档本身中指定的算法选择解密密钥。 |
SAML 签名密钥名称 |
使用 POST 绑定发送的 SAML 文档包含 |
强制身份验证 | 用户必须在外部 IDP 中输入其凭证,即使用户已经登录。 |
验证签名 | 当 ON 时,域预期来自外部 IDP 的 SAML 请求和响应进行数字签名。 |
元数据描述符 URL |
身份提供程序发布 |
使用元数据描述符 URL |
当 ON 时,验证签名的证书会自动从
当选项为 OFF 时,使用 |
验证 X509 证书 |
当使用 |
为服务提供商元数据签名 | 当 ON 时,红帽构建的 Keycloak 使用域的密钥对为 SAML 服务提供商元数据描述符 签名。 |
传递主题 |
控制红帽构建的 Keycloak 是否将 |
属性消耗服务索引 | 标识设置为请求到远程 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,则身份提供程序不会强制执行额外的限制。
Configuration | 描述 |
---|---|
比较 |
身份提供程序用于评估上下文要求的方法。可用值包括 |
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
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 请求中发送主题。