This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.9. 配置 OpenID Connect 身份提供程序
配置 oidc
身份提供程序,使用授权代码流与 OpenID Connect 身份提供程序集成。
您可以将 Red Hat Single Sign-On 配置为 OpenShift Container Platform 的 OpenID Connect 身份提供程序。
OpenShift Container Platform 中的 Authentication Operator 要求配置的 OpenID Connect 身份提供程序实现 OpenID Connect Discovery 规格。
不支持 ID Token
和 UserInfo
解密。
默认情况下,需要 openid
范围。如果必要,可在 extraScopes
字段中指定额外的范围。
声明可读取自从 OpenID 身份提供程序返回的 JWT id_token
;若有指定,也可读取自从 UserInfo
URL 返回的 JSON。
必须至少配置一个声明,以用作用户的身份。标准的身份声明是 sub
。
您还可以指定将哪些声明用作用户的首选用户名、显示名称和电子邮件地址。如果指定了多个声明,则使用第一个带有非空值的声明。标准的声明是:
| “subject identifier”的缩写。 用户在签发者处的远程身份。 |
|
置备用户时的首选用户名。用户希望使用的简写名称,如 |
| 电子邮件地址。 |
| 显示名称。 |
如需更多信息,请参阅 OpenID 声明文档。
使用 OpenID Connect 身份提供程序要求用户使用 <master>/oauth/token/request
来获取令牌,以便用于命令行工具。
4.9.1. 关于 OpenShift Container Platform 中的身份提供程序 复制链接链接已复制到粘贴板!
默认情况下,集群中只有 kubeadmin
用户。要指定身份提供程序,您必须创建一个自定义资源(CR) 来描述该身份提供程序并把它添加到集群中。
OpenShift Container Platform 用户名不能包括 /
、:
和 %
。
4.9.2. 创建 secret 复制链接链接已复制到粘贴板!
身份提供程序使用 openshift-config
命名空间中的 OpenShift Container Platform Secret
对象来包含客户端 secret、客户端证书和密钥。
您可以使用以下命令,定义一个包含字符串的 OpenShift Container Platform
Secret
对象。oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config
$ oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用以下命令,定义一个文件(如证书文件)内容的 OpenShift Container Platform
Secret
。oc create secret generic <secret_name> --from-file=/path/to/file -n openshift-config
$ oc create secret generic <secret_name> --from-file=/path/to/file -n openshift-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9.3. 创建配置映射 复制链接链接已复制到粘贴板!
身份提供程序使用 openshift-config
命名空间中的 OpenShift Container Platform ConfigMap
对象来包含证书颁发机构捆绑包。主要用于包含身份提供程序所需的证书捆绑包。
使用以下命令,定义包含证书颁发机构的 OpenShift Container Platform
ConfigMap
。证书颁发机构必须存储在ConfigMap
对象的ca.crt
键中。oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config
$ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9.4. OpenID Connect CR 示例 复制链接链接已复制到粘贴板!
以下自定义资源 (CR) 显示 OpenID Connect 身份提供程序的参数和可接受值。
如果您必须指定自定义证书捆绑包、额外范围、额外授权请求参数或 userInfo
URL,请使用完整的 OpenID Connect CR。
标准 OpenID Connect CR
- 1
- 此提供程序名称作为前缀放在身份声明值前,以此组成身份名称。它还可用来构建的重定向 URL。
- 2
- 控制如何在此提供程序的身份和
User
对象之间建立映射。 - 3
- 在 OpenID 提供程序中注册的客户端的客户端 ID。该客户端必须能够重定向到
https://oauth-openshift.apps.<cluster_name>.<cluster_domain>/oauth2callback/<idp_provider_name>
。 - 4
- 对包含客户端 secret 的 OpenShift Container Platform
Secret
对象的引用。 - 5
- 用作身份的声明的列表。使用第一个非空声明。至少需要一个声明。如果列出的声明都没有值,身份验证会失败。例如,这使用返回的
id_token
中的sub
声明的值作为用户的身份。 - 6
- OpenID 规范中描述的签发者标识符。必须使用
https
,且不带查询或分段组件。
完整 OpenID Connect CR
4.9.5. 将身份提供程序添加到集群中 复制链接链接已复制到粘贴板!
安装集群之后,请在其中添加一个身份提供程序,以便您的用户可以进行身份验证。
先决条件
- 创建 OpenShift Container Platform 集群。
- 为身份提供程序创建自定义资源(CR)。
- 必须已经以管理员身份登录。
流程
应用定义的 CR:
oc apply -f </path/to/CR>
$ oc apply -f </path/to/CR>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果一个 CR 不存在,
oc apply
会创建一个新的 CR,并可能会触发以下警告Warning: oc apply should be used on resources created by either oc create --save-config or oc apply
。在这种情况下,您可以忽略这个警告。从 OAuth 服务器获取令牌。
只要
kubeadmin
用户已被删除,oc login
命令就会提供如何访问可以获得令牌的网页的说明。您还可以通过使用 web 控制台的 (?)访问此页面。 Help
Command Line Tools Copy Login Command. 登录到集群,提供令牌进行身份验证。
oc login --token=<token>
$ oc login --token=<token>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意这个身份提供程序不支持使用用户名和密码登录。
确认用户登录成功,并显示用户名。
oc whoami
$ oc whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9.6. 使用 web 控制台配置身份提供程序 复制链接链接已复制到粘贴板!
通过 web 控制台而非 CLI 配置身份提供程序 (IDP)。
先决条件
- 您必须以集群管理员身份登录到 web 控制台。
流程
-
导航至 Administration
Cluster Settings。 - 在 Global Configuration 选项卡下,点 OAuth。
- 在 Identity Providers 部分中,从 Add 下拉菜单中选择您的身份提供程序。
您可以通过 web 控制台来指定多个 IDP,而不会覆盖现有的 IDP。