4.8. 配置 Google 身份提供程序

配置 google 身份提供程序,使用 Google 的 OpenID Connect 集成

注意

使用 Google 作为身份提供程序要求用户使用 <master>/oauth/token/request 来获取令牌,以便用于命令行工具。

警告

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

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

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

注意

OpenShift Container Platform 用户名不能包括 /:%

4.8.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
  • 您可以使用以下命令,定义一个文件(如证书文件)内容的 OpenShift Container Platform Secret

    $ oc create secret generic <secret_name> --from-file=/path/to/file -n openshift-config

4.8.3. 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 。项目必须配置有重定向 URI https://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name>
4
对包含 Google 发布的客户端 Secret 的 OpenShift Container Platform Secret 的引用。
5
用于限制登录帐户的托管域。如果使用了 lookup mappingMethod,则可选。如果为空,任何 Google 帐户都可进行身份验证。

4.8.4. 将身份提供程序添加到集群中

安装集群之后,请在其中添加一个身份提供程序,以便您的用户可以进行身份验证。

先决条件

  • 创建 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 控制台的 (?)访问此页面。 HelpCommand Line ToolsCopy Login Command.

  3. 登录到集群,提供令牌进行身份验证。

    $ oc login --token=<token>
    注意

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

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

    $ oc whoami