4.3. 配置 OpenShift 3.11 以使用 Red Hat Single Sign-On 进行身份验证
配置 OpenShift 3.11,以使用红帽单点登录部署作为 OpenShift 的授权网关。
本例添加了 Red Hat Single Sign-On 作为验证方法,以及安装 OpenShift Container Platform 集群期间配置的身份提供程序。配置后,红帽单点登录方法也将可用(与配置的身份提供程序)用于用户登录 OpenShift Web 控制台。
4.3.1. 配置红帽单点登录凭证 复制链接链接已复制到粘贴板!
先决条件
- 已执行 为 OpenShift Deployment 准备红帽单点登录身份验证 部分中描述的步骤。
流程
在 https://secure-sso-sso-app-demo 登录加密的红帽单点登录 Web 服务器。openshift32.example.com/auth/admin 使用 Red Hat Single Sign-On 部署期间创建的 xref:sso-administrator-setup[administrator 帐户。
创建一个 Realm
- 将光标悬停在域命名空间(默认为 主栏的顶部),然后单击 Add Realm。
- 输入 realm 名称(本示例使用 OpenShift)并点 Create。
创建用户
创建一个测试用户,用于演示启用了 Red Hat Single Sign-On 的 OpenShift 登录:
- 单击 Manage sidebar 中的 Users,以查看域的用户信息。
- 单击 添加用户。
- 输入一个有效的 Username (本示例使用 testuser)和任何其他可选信息,然后单击保存。
编辑用户配置:
- 单击用户空间中的 Credentials 选项卡,然后输入用户的密码。
- 确保将 Temporary Password 选项设为 Off,以便它不会稍后提示输入密码,然后单击 Reset Password 来设置用户密码。弹出窗口提示进行额外的确认。
创建并配置 OpenID-Connect Client
- 单击 Manage 栏中的 Clients,再单击 Create。
- 输入 客户端 ID。这个示例使用 openshift-demo。
- 从下拉菜单中选择 Client Protocol (本例使用 openid-connect)并点 Save。您将进入 openshift-demo 客户端的配置设置页面。
- 从 Access Type 下拉菜单中选择 confidential。这是服务器端应用程序的访问类型。
- 在 Valid Redirect URIs 对话框中,输入 OpenShift Web 控制台的 URI,本例中为 https://openshift.example.com:8443/*。
在下一节中,需要客户端 Secret 在 OpenShift 主控机上配置 OpenID-Connect。现在,您可以在 Credentials 标签页下复制它。secret 是 <7b0384a2-b832-16c5-9d73-2957842e89h7>。
4.3.2. 为红帽单点登录身份验证配置 OpenShift Master 复制链接链接已复制到粘贴板!
登录 OpenShift 主控机 CLI。
先决条件
您必须具有编辑 /etc/origin/master/master-config.yaml 文件的权限。
流程
编辑 /etc/origin/master/master-config.yaml 文件并找到 identityProviders 部分。例如,如果 OpenShift 主控机配置了 HTPassword 身份提供程序,则 identityProviders 部分将类似如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Red Hat Single Sign-On 作为二级身份提供程序添加类似以下代码片段的内容:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
clientSecret 的 Red Hat Single Sign-On Secret hash 可在 Red Hat Single Sign-On Web 控制台中找到: Clients
openshift-demo Credentials 可以通过使用红帽单点登录应用程序发出请求来查找 urls 的端点。例如:
<curl -k https://secure-sso-sso-app-demo.openshift32.example.com/auth/realms/OpenShift/.well-known/openid-configuration | python -m json.tool>
<curl -k https://secure-sso-sso-app-demo.openshift32.example.com/auth/realms/OpenShift/.well-known/openid-configuration | python -m json.tool>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应包括 authorization_endpoint、token_endpoint 和 userinfo_endpoint。
- 这个示例工作流使用自生成的 CA 为演示提供一个端到端工作流。因此,ca 作为 <ca: xpaas.crt> 提供。此 CA 证书还必须复制到 /etc/origin/master 文件夹中。如果使用从验证的证书颁发机构购买的证书,则不需要这样做。
-
clientSecret 的 Red Hat Single Sign-On Secret hash 可在 Red Hat Single Sign-On Web 控制台中找到: Clients
保存配置并重启 OpenShift master:
systemctl restart atomic-openshift-master
$ systemctl restart atomic-openshift-masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. 登录 OpenShift 复制链接链接已复制到粘贴板!
流程
导航到 OpenShift Web 控制台,在这个示例中为 https://openshift.example.com:8443/console。
OpenShift 登录页面现在提供使用 htpasswd_auth 或 rh-sso 身份提供程序登录的选项?前者仍然可用,因为它存在于 /etc/origin/master/master-config.yaml 中。
选择 rh-sso,再使用之前在红帽单点登录中创建的 testuser 用户登录 OpenShift。
在 OpenShift CLI 中添加项目之前,项目对 testuser 可见。这是在 OpenShift 中提供用户特权的唯一方法,因为它目前不接受外部角色映射。
要为 sso-app-demo 提供 testuser
视图特权,请使用 OpenShift CLI:oc adm policy add-role-to-user view testuser -n sso-app-demo
$ oc adm policy add-role-to-user view testuser -n sso-app-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow