3.9. Red Hat Single Sign-On 客户端
客户端是请求用户身份验证的红帽单点登录实体。客户端可以是请求红帽单点登录以提供用户身份验证的应用,也可以为访问令牌发出请求,以代表经过身份验证的用户启动服务。如需更多信息,请参阅 Red Hat Single Sign-On 文档中的管理客户端章节。
Red Hat Single Sign-On 提供 OpenID-Connect 和 SAML 客户端协议。
OpenID-Connect 是首选协议,它使用三种不同的访问类型:
- 公共 :对于直接在浏览器中运行的 JavaScript 应用,不需要服务器配置。
- 机密 :对于需要执行浏览器登录的服务器端客户端,如 EAP Web 应用。
- 仅 bearer-only :对于允许 bearer 令牌请求的后端服务。
需要在应用程序 web.xml 文件的 < ;auth-method > 键中指定客户端类型。在部署时,该文件由镜像读取。将 < auth-method> 元素的值设置为:
- 用于 OpenID Connect 客户端的 KEYCLOAK。
- 用于 SAML 客户端的 KEYCLOAK-SAML。
以下是用来配置 OIDC 客户端的应用程序 web.xml 示例片断:
...
<login-config>
<auth-method>KEYCLOAK</auth-method>
</login-config>
...3.9.1. 自动和手动红帽单点登录客户端注册方法
客户端应用可使用特定于 eap64-sso-s2i、eap71-sso-s2i 和 datavirt63-secure-s2i 模板的变量中自动注册到红帽单点登录域。
或者,您可以通过配置和导出 Red Hat Single Sign-On 客户端适配器并包含在客户端应用程序配置中来手动注册客户端应用程序。
3.9.1.1. 自动 Red Hat Single Sign-On 客户端注册
自动红帽单点登录客户端注册由特定于 eap64-sso-s2i、eap71-sso-s2i 和 datavirt63-secure-s2i 模板的 Red Hat Single Sign-On 环境变量决定。然后,使用模板中提供的 Red Hat Single Sign-On 凭证,在部署客户端应用期间将客户端注册到 Red Hat Single Sign-On 域。
eap64-sso-s2i、eap71-sso-s2i 和 datavirt63-secure-s2i 中包含的 Red Hat Single Sign-On 环境变量包括:
| 变量 | 描述 |
|---|---|
| HOSTNAME_HTTP | http 服务路由的自定义主机名。将空保留为默认主机名 <application-name>.<project>.<default-domain-suffix> |
| HOSTNAME_HTTPS | https 服务路由的自定义主机名。将空保留为默认主机名 <application-name>.<project>.<default-domain-suffix> |
| SSO_URL | Red Hat Single Sign-On web 服务器验证地址:https://secure-sso- <project-name> . & lt;hostname>/auth |
| SSO_REALM | 为此流程创建的红帽单点登录域。 |
| SSO_USERNAME | 域管理用户 的名称。 |
| SSO_PASSWORD | 用户的密码。 |
| SSO_PUBLIC_KEY | 域生成的公钥。它位于 Red Hat Single Sign-On 控制台的 Realm Settings 的 Keys 选项卡中。 |
| SSO_BEARER_ONLY | 如果设置为 true,则 OpenID Connect 客户端将注册为 bearer-only。 |
| SSO_ENABLE_CORS | 如果设置为 true,Red Hat Single Sign-On 适配器启用 Cross-Origin Resource Sharing(CORS)。 |
如果 Red Hat Single Sign-On 客户端使用 SAML 协议,则需要配置以下额外变量:
| 变量 | 描述 |
|---|---|
| SSO_SAML_KEYSTORE_SECRET | 用于访问 SAML 密钥存储的机密。默认值为 sso-app-secret。 |
| SSO_SAML_KEYSTORE | SAML 密钥存储机密中的密钥存储文件名。默认为 keystore.jks。 |
| SSO_SAML_KEYSTORE_PASSWORD | SAML 的密钥存储密码。默认为 mykeystorepass。 |
| SSO_SAML_CERTIFICATE_NAME | SAML 所用密钥/证书的别名。默认为 jboss。 |
请参阅 示例:在带有 OpenID-Connect 客户端的红帽单点登录中自动注册 EAP 应用程序,以获取使用 OpenID -Connect 客户端自动客户端注册方法的端到端示例。
3.9.1.2. 手动注册红帽单点登录客户端注册
手动注册红帽单点登录客户端注册由客户端应用的 ../configuration/ 目录中的部署文件决定。这些文件从红帽单点登录 Web 控制台中的客户端适配器导出。此文件的名称是 OpenID-Connect 和 SAML 客户端的不同:
| OpenID-Connect | ../configuration/secure-deployments |
| SAML | ../configuration/secure-saml-deployments |
这些文件被复制到部署应用程序时,位于 的 standalone-openshift.xml 中的 Red Hat Single Sign-On adapter 配置部分。
可以通过两种方法将 Red Hat Single Sign-On 适配器配置传递给客户端应用程序:
- 修改部署文件以包含 Red Hat Single Sign-On 适配器配置,以便在部署时将其包含在 standalone-openshift.xml 文件中,或者
- 手动包含 OpenID-Connect keycloak.json 文件,或将 SAML keycloak-saml.xml 文件包含在客户端应用程序的 ... /WEB-INF 目录中。
请参阅 示例工作流:手动将应用配置为使用 Red Hat Single Sign-On 身份验证,使用 SAML 客户端作为手动红帽单点登录客户端注册方法的端到端示例。