12.2. 创建 SAML 客户端
红帽单点登录支持 SAML 2.0 注册的应用程序。支持 POST 和 Redirect 绑定。您可以选择需要客户端签名验证。您还可以具有服务器符号和/或加密响应。
流程
- 点菜单中的 Clients。
点 Create 进入 Add Client 页面。
添加客户端
- 输入客户端的客户端 ID。这通常是 URL,是应用程序发送的 SAML 请求中预期的 签发者 值。
- 在客户端 协议下拉列表中, 选择 saml。
- 输入 Client SAML Endpoint URL。这个 URL 是您希望 Red Hat Single Sign-On 服务器发送 SAML 请求和响应的地方。通常,应用程序有一个处理 SAML 请求的 URL。可在客户端的 Settings 选项卡中设置多个 URL。
点 Save。此操作会创建客户端,并将您带到 Settings 选项卡。
客户端设置
以下列表描述了每个设置:
- 客户端 ID
- OIDC 请求和 Red Hat Single Sign-On 数据库中使用的 alpha-numeric ID 字符串来识别客户端。这个值必须与 AuthNRequests 发送的签发值匹配。Red Hat Single Sign-On 从 Authn SAML 请求拉取签发者,并将其与客户端匹配。
- 名称
- Red Hat Single Sign-On UI 屏幕中的客户端名称。要本地化名称,请设置替换字符串值。例如,字符串值,如 ${myapp}。如需更多信息,请参阅 服务器开发人员指南。
- 描述
- 客户端的描述。此设置也可以本地化。
- Enabled
- 当设置为 OFF 时,客户端无法请求身份验证。
- 需要同意
- 当设置为 ON 时,用户会看到一个授权对该应用的访问权限的同意页面。该页面也显示客户端可以访问的信息的元数据。如果您曾对 Facebook 进行了一个社交登录,您通常会看到一个类似的页面。红帽单点登录提供相同的功能。
- 包括 AuthnStatement
- SAML 登录响应可能会指定所用的身份验证方法,如密码,以及登录和会话过期的时间戳。包括 Authn Statement 会被默认启用,以便在登录响应中包含 AuthnStatement 元素。将其设置为 OFF 可防止客户端确定最大会话长度,它们可以创建不过期的客户端会话。
- 签署文档
- 当设置为 ON 时,Red Hat Single Sign-On 使用域私钥为文档签名。
- 优化 REDIRECT 签名密钥查找
当设置为 ON 时,SAML 协议信息包括 Red Hat Single Sign-On 原生扩展。这个扩展包含一个带有签名密钥 ID 的提示。SP 使用扩展进行签名验证,而不是尝试使用密钥验证签名。
这个选项适用于在查询参数中传输签名的 REDIRECT 绑定,且此信息不会在签名信息中找到。这只适用于 POST 绑定消息,其中密钥 ID 始终包含在文档签名中。
当 Red Hat Single Sign-On 服务器和适配器提供 IDP 和 SP 时,使用这个选项。只有在将 Sign Documents 设为 ON 时,这个选项才有意义。
- Signsertions
- 断言是签名并嵌入在 SAML XML Auth 响应中。
- 签名算法
- 签名 SAML 文档中使用的算法。
- SAML 签名密钥名称
使用 POST 绑定发送签名的 SAML 文档包含 KeyName 元素中的签名密钥识别。此操作可由 SAML Signature Key Name 选项控制。此选项控制关键字 的内容。
- KEY_id The KeyName 包含密钥 ID。此选项是默认选项。
- CERT_SUBJECT 的 KeyName 包含与域密钥对应的证书的主题。Microsoft Active Directory Federation 服务预期这个选项。
- NONE The KeyName hint 在 SAML 消息中完全省略。
- 规范方法
- XML 签名的规范方法。
- encrypt Assertions
- 使用 realms 私钥加密 SAML 文档中的断言。AES 算法使用密钥大小为 128 位。
- 需要客户端签名
-
如果需要启用客户端签名,则应该签署来自客户端的文档。Red Hat Single Sign-On 将使用在
Keys
选项卡中设置的客户端公钥或证书验证此签名。 - 强制 POST 绑定
- 默认情况下,Red Hat Single Sign-On 会使用原始请求的初始 SAML 绑定进行响应。通过启用 Force POST Binding,Red Hat Single Sign-On 会使用 SAML POST 绑定响应,即使原始请求使用了重定向绑定。
- 前端频道注销
- 如果启用了 Front Channel Logout,应用程序需要浏览器重定向才能执行注销。例如,应用可能需要对 Cookie 进行重置,而只能通过重定向进行。如果禁用 Front Channel Logout,Red Hat Single Sign-On 会调用后台 SAML 请求退出应用程序。
- 强制名称 ID 格式
- 如果请求具有名称 ID 策略,忽略它并使用 名称 ID 格式 下管理控制台中配置的值。
- 名称 ID 格式
- 主题的 Name ID 格式。如果没有在请求中指定名称 ID 策略,则使用此格式,或者 Force Name ID Format 属性设置为 ON。
- Root URL
- 当 Red Hat Single Sign-On 使用配置的相对 URL 时,这个值会与 URL 的前面。
- 有效的 Redirect URI
- 输入 URL 模式,然后单击要添加的 + 符号。点击要删除的 - 符号。点 Save 保存更改。通配符值只能在 URL 的末尾进行。例如: http://host.com/*$$。当不正确的 SAML 端点没有注册时,会使用此字段,Red Hat Single Sign-On 会拉取 Assertion Consumer URL。
- 基本 URL
- 如果 Red Hat Single Sign-On 需要链接到客户端,则会使用这个 URL。
- Master SAML 处理 URL
这个 URL 用于所有 SAML 请求,响应会被定向到 SP。它被用作 Assertion Consumer Service URL 和 Single Logout Service URL。
如果登录请求包含 Assertion Consumer Service URL,则这些登录请求将优先使用。这个 URL 必须通过注册的 Valid Redirect URI 模式进行验证。
- Assertion Consumer Service POST Binding URL
- Assertion Consumer Service 的 POST Binding URL。
- Assertion Consumer Service Redirect Binding URL
- 重定向 Assertion Consumer Service 的绑定 URL。
- 注销 Service POST Binding URL
- Logout Service 的 POST Binding URL。
- Logout Service Redirect Binding URL
- 重定向 Logout 服务的绑定 URL。
- logout Service Artifact Binding URL
-
Logout Service 的构件绑定 URL。当与
Force Artifact Binding
选项结合使用时,在登录和注销流中都强制使用 Artifact 绑定。除非设置了此属性,否则不会用于注销工件 绑定。 - 工件绑定 URL
- 将 HTTP 构件消息发送到的 URL。
- 工件解析服务
-
客户端 SOAP 端点的 URL,用于将
ArtifactResolve
消息发送到.
12.2.1. IDP Initiated 登录
IDP Initiated Login 是一个功能,允许您在 Red Hat Single Sign-On 服务器上设置端点,供您登录到特定应用程序/客户端。在客户端的 Settings 选项卡中,您需要指定 IDP Initiated SSO URL Name。这是一个简单的字符串,其中没有空格。在此之后,您可以在以下 URL 引用您的客户端: root/auth/realms/{realm}/protocol/saml/clients/{url-name}
IDP 启动的登录实施优先于 REDIRECT 绑定的 POST (检查 saml 绑定 以了解更多信息)。因此,最终的绑定和 SP URL 会被选择,其方式如下:
- 如果定义了特定的 Assertion Consumer Service POST Binding URL (在 Fine Grain SAML Endpoint Configuration 部分) POST 绑定通过该 URL 使用。
- 如果指定了常规 Master SAML 处理 URL,则再次通过这个通用 URL 使用 POST 绑定。
- 最后的手段是,如果配置了 Assertion Consumer Service Redirect Binding URL (在 Fine Grain SAML Endpoint Configuration中) REDIRECT 绑定与该 URL 一起使用。
如果您的客户端需要特殊的中继状态,也可以在 IDP Initiated SSO Relay State 字段中的 Settings 选项卡中配置它。或者,浏览器可以在 RelayState 查询参数中指定转发状态,即 root/auth/realms/{realm}/protocol/saml/clients/{url-name}?RelayState=thestate
。
使用 身份提供程序 时,可以从 外部 IDP 为客户端设置 IDP 发起的登录。根据上述所述,实际客户端在代理 IDP 中为 IDP 设置 IDP。外部 IDP 必须为应用程序 IDP 发起的登录设置客户端,该登录将指向指向代理的特殊 URL,并在代理 IDP 中代表所选客户端 IDP 的 IDP 发起的登录端点。这意味着,在外部 IDP 的客户端设置中:
- IDP Initiated SSO URL Name 设置为将作为 IDP Initiated Login 初始点发布的名称。
Fine Grain SAML Endpoint Configuration 部分中的 assertion Consumer Service POST Binding URL 必须设置为以下 URL:
broker-root/auth/realms/{broker-realm}/broker/{idp-name}/endpoint/clients/{client-id}
,其中:- broker-root 是基本代理 URL
- broker-realm 是声明外部 IDP 的代理的域名称
- IdP-name 是代理的外部 IDP 的名称
- client-id 是代理上定义的 SAML 客户端的 IDP Initiated SSO URL Name 属性的值。此客户端将提供给来自外部 IDP 的 IDP 发起的登录。
请注意,您可以将基本客户端设置从代理 IDP 导入到外部 IDP 的客户端设置中,仅使用代理 IDP 中的身份提供程序设置,并将 client/client-id
添加到端点 URL 中。???