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.7.9. 配置 OpenID Connect 身份提供程序
配置 oidc
身份提供程序,使用授权代码流与 OpenID Connect 身份提供程序集成。
7.9.1. 关于 OpenShift Container Platform 中的身份提供程序 复制链接链接已复制到粘贴板!
默认情况下,集群中只有 kubeadmin
用户。要指定身份提供程序,您必须创建一个自定义资源(CR) 来描述该身份提供程序并把它添加到集群中。
OpenShift Container Platform 用户名不能包括 /
、:
和 %
。
7.9.2. 创建 secret 复制链接链接已复制到粘贴板!
身份提供程序使用 openshift-config
命名空间中的 OpenShift Container Platform Secret
对象来包含客户端 secret、客户端证书和密钥。
流程
使用以下命令创建一个包含字符串的
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 提示您还可以应用以下 YAML 来创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用以下命令定义一个包含文件内容的
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
7.9.3. 创建配置映射 复制链接链接已复制到粘贴板!
身份提供程序使用 openshift-config
命名空间中的 OpenShift Container Platform ConfigMap
对象来包含证书颁发机构捆绑包。主要用于包含身份提供程序所需的证书捆绑包。
只有 GitHub Enterprise 需要此步骤。
流程
使用以下命令,定义包含证书颁发机构的 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 提示您还可以应用以下 YAML 来创建配置映射:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.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
7.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 注意如果您的 OpenID Connect 身份提供程序支持资源所有者密码凭证(ROPC)授权流,您可以使用用户名和密码登录。您可能需要执行相应的步骤,为身份提供程序启用 ROPC 授权流。
在 OpenShift Container Platform 中配置 OIDC 身份提供程序后,您可以使用以下命令登录,以提示您的用户名和密码:
oc login -u <identity_provider_username> --server=<api_server_url_and_port>
$ oc login -u <identity_provider_username> --server=<api_server_url_and_port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认用户登录成功,并显示用户名。
oc whoami
$ oc whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.9.6. 使用 web 控制台配置身份提供程序 复制链接链接已复制到粘贴板!
通过 web 控制台而非 CLI 配置身份提供程序 (IDP)。
先决条件
- 您必须以集群管理员身份登录到 web 控制台。
流程
-
导航至 Administration
Cluster Settings。 - 在 Global Configuration 选项卡下,点 OAuth。
- 在 Identity Providers 部分中,从 Add 下拉菜单中选择您的身份提供程序。
您可以通过 web 控制台来指定多个 IDP,而不会覆盖现有的 IDP。