×

关于 OpenShift Container Platform 中的身份提供程序

默认情况下,您的集群中只存在kubeadmin用户。要指定身份提供程序,您必须创建一个描述该身份提供程序的自定义资源 (CR),并将其添加到集群中。

OpenShift Container Platform 用户名包含/:%不受支持。

关于 Google 身份验证

使用 Google 作为身份提供程序允许任何 Google 用户对您的服务器进行身份验证。您可以使用hostedDomain配置属性将身份验证限制为特定托管域的成员。

使用 Google 作为身份提供程序要求用户使用<namespace_route>/oauth/token/request获取令牌才能与命令行工具一起使用。

创建密钥

身份提供程序在openshift-config命名空间中使用 OpenShift Container Platform Secret对象来包含客户端密钥、客户端证书和密钥。

步骤
  • 使用以下命令创建一个包含字符串的Secret对象

    $ oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config

    或者,您可以应用以下 YAML 来创建密钥:

    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret_name>
      namespace: openshift-config
    type: Opaque
    data:
      clientSecret: <base64_encoded_client_secret>
  • 您可以使用以下命令定义一个包含文件内容的Secret对象:

    $ oc create secret generic <secret_name> --from-file=<path_to_file> -n openshift-config

Google CR 示例

以下自定义资源 (CR) 显示了 Google 身份提供程序的参数和可接受的值。

Google CR
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: googleidp (1)
    mappingMethod: claim (2)
    type: Google
    google:
      clientID: {...} (3)
      clientSecret: (4)
        name: google-secret
      hostedDomain: "example.com" (5)
1 此提供程序名称作为前缀添加到 Google 数字用户 ID,以形成身份名称。它还用于构建重定向 URL。
2 控制如何在此提供程序的身份与User对象之间建立映射。
3 注册的 Google 项目的客户端 ID。该项目必须配置为具有https://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name>的重定向 URI。
4 对包含 Google 发出的客户端密钥的 OpenShift Container Platform Secret对象的引用。
5 用于限制登录帐户的托管域。如果使用lookupmappingMethod,则可选。如果为空,则允许任何 Google 帐户进行身份验证。
其他资源
  • 有关参数(例如mappingMethod)的信息,这些参数对所有身份提供程序都是通用的,请参见身份提供程序参数

将身份提供程序添加到您的集群

安装集群后,向其添加身份提供程序,以便用户可以进行身份验证。

先决条件
  • 创建一个 OpenShift Container Platform 集群。

  • 为您的身份提供程序创建自定义资源 (CR)。

  • 您必须以管理员身份登录。

步骤
  1. 应用已定义的 CR

    $ oc apply -f </path/to/CR>

    如果 CR 不存在,oc apply将创建一个新的 CR,并可能触发以下警告:Warning: oc apply should be used on resources created by either oc create --save-config or oc apply。在这种情况下,您可以安全地忽略此警告。

  2. 从 OAuth 服务器获取令牌。

    只要已删除kubeadmin用户,oc login命令就会提供有关如何访问网页的说明,您可以在其中检索令牌。

    您还可以通过导航到**(?) 帮助**→**命令行工具**→**复制登录命令**从 Web 控制台访问此页面。

  3. 登录到集群,传入令牌以进行身份验证。

    $ oc login --token=<token>

    此身份提供程序不支持使用用户名和密码登录。

  4. 确认用户已成功登录,并显示用户名。

    $ oc whoami