13.3.10.2. 在 master 上配置身份验证


  1. 如果您有:

    • 已安装 OpenShift Container Platform,然后将 /etc/origin/master/master-config.yaml 文件复制到新目录中,例如:

      $ cd /etc/origin/master
      $ mkdir githubconfig; cp master-config.yaml githubconfig
    • 尚未安装 OpenShift Container Platform,然后启动 OpenShift Container Platform API 服务器,指定(future)OpenShift Container Platform master 的主机名,以及一个用于存储由 start 命令创建的配置文件的目录:

      $ openshift start master --public-master=<apiserver> --write-config=<directory>

      例如:

      $ openshift start master --public-master=https://myapiserver.com:8443 --write-config=githubconfig
      注意

      如果要使用 Ansible 安装,您必须将 identityProvider 配置添加到 Ansible playbook 中。如果在使用 Ansible 安装后使用以下步骤手动修改配置,那么每当您重新运行安装工具或升级时,您都会丢失任何修改。

      注意

      使用 openshift 自行启动 master 将自动检测主机名,但 GitHub 必须能够重定向到您在注册应用程序时指定的准确主机名。因此,您无法自动检测 ID,因为它可能会重定向到错误的地址。反之,您必须指定 Web 浏览器用来与 OpenShift Container Platform 集群交互的主机名。

  2. 编辑新的 master-config.yaml 文件的 identityProviders 小节,并复制示例 GitHubIdentityProvider 配置并粘贴它来替换现有的小节:

    oauthConfig:
      ...
      identityProviders:
      - name: github 1
        challenge: false 2
        login: true 3
        mappingMethod: claim 4
        provider:
          apiVersion: v1
          kind: GitHubIdentityProvider
          ca: ... 5
          clientID: ... 6
          clientSecret: ... 7
          hostname: ... 8
          organizations: 9
          - myorganization1
          - myorganization2
          teams: 10
          - myorganization1/team-a
          - myorganization2/team-b
    1
    此提供程序名称作为前缀放在 GitHub 数字用户 ID 前,以此组成身份名称。它还可用来构建回调 URL。
    2
    GitHubIdentityProvider 无法用于发送 WWW-Authenticate 质询。
    3
    true 时,来自 Web 客户端(如 Web 控制台)的未经身份验证的令牌请求将重定向到 GitHub 以进行登录。
    4
    控制如何在此提供程序的身份和用户对象之间建立映射,如上 所述
    5
    对于 GitHub Enterprise,CA 是向服务器发出请求时使用的可选的可信证书颁发机构捆绑包。省略此参数以使用默认系统 root 证书。对于 GitHub,请省略此参数。
    6
    注册的 GitHub OAuth 应用程序的客户端 ID。应用程序必须配置有 < master>/oauth2callback/<identityProviderName&gt; 的回调 URL。
    7
    GitHub 发布的客户端 secret。此值也可在 环境变量、外部文件或加密文件 中提供。
    8
    对于 GitHub Enterprise,您必须提供实例的主机名,如 example.com。这个值必须与 /setup/settings 文件中的 GitHub Enterprise hostname 值匹配,且不可包括端口号。对于 GitHub,请省略此参数。
    9
    可选的组织列表。如果指定,只有至少是一个所列组织成员的 GitHub 用户才能登录。如果在 clientID 中配置的 GitHub OAuth 应用程序不归该组织所有,则组织所有者必须授予第三方访问权限才能使用此选项。这可以在组织管理员第一次登录 GitHub 时完成,也可以在 GitHub 组织设置中完成。不可与 teams 字段结合使用。
    10
    可选的团队列表。如果指定,只有是至少一个列出团队的成员的 GitHub 用户才能登录。如果在 clientID 中配置的 GitHub OAuth 应用程序不归该团队的组织所有,则组织所有者必须授予第三方访问权限才能使用此选项。这可以在组织管理员第一次登录 GitHub 时完成,也可以在 GitHub 组织设置中完成。不可与 organizations 字段结合使用。
  3. identityProviders 小节进行以下修改:

    1. 更改供应商名称,以匹配您在 GitHub 上配置回调 URL。

      例如,如果您将回调 URL 定义为 https://myapiserver.com:8443/oauth2callback/github/,则 name 必须是 github

    2. clientID 更改为您之前注册的 GitHub 中的客户端 ID。
    3. clientSecret 改为 之前注册的 GitHub 中的 Client Secret。
    4. 更改 organizationsteams,使其包含一个或多个 GitHub 机构或团队的列表,用户必须具有成员资格才能进行身份验证。如果指定,只有至少是一个列出的机构或团队的成员的 GitHub 用户才能登录。如果未指定,则具有有效 GitHub 帐户的任何人都可以登录。
  4. 保存您的更改并关闭该文件。
  5. 启动 OpenShift Container Platform API 服务器,指定您刚才修改的配置文件:

    $ openshift start master --config=<path/to/modified/config>/master-config.yaml

配置后,任何登录 OpenShift Container Platform Web 控制台的用户都将提示使用其 GitHub 凭证登录。首次登录时,用户必须点击 授权应用程序 来允许 GitHub 使用其用户名、密码和机构成员资格。然后,用户会被重新重定向到 Web 控制台。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.