13.3.10.2. 在 master 上配置身份验证
如果您有:
已安装 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 集群交互的主机名。
编辑新的 master-config.yaml 文件的
identityProviders小节,并复制示例GitHubIdentityProvider配置并粘贴它来替换现有的小节:oauthConfig: ... identityProviders: - name: github1 challenge: false2 login: true3 mappingMethod: claim4 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> 的回调 URL。 - 7
- GitHub 发布的客户端 secret。此值也可在 环境变量、外部文件或加密文件 中提供。
- 8
- 对于 GitHub Enterprise,您必须提供实例的主机名,如
example.com。这个值必须与 /setup/settings 文件中的 GitHub Enterprisehostname值匹配,且不可包括端口号。对于 GitHub,请省略此参数。 - 9
- 可选的组织列表。如果指定,只有至少是一个所列组织成员的 GitHub 用户才能登录。如果在
clientID中配置的 GitHub OAuth 应用程序不归该组织所有,则组织所有者必须授予第三方访问权限才能使用此选项。这可以在组织管理员第一次登录 GitHub 时完成,也可以在 GitHub 组织设置中完成。不可与teams字段结合使用。 - 10
- 可选的团队列表。如果指定,只有是至少一个列出团队的成员的 GitHub 用户才能登录。如果在
clientID中配置的 GitHub OAuth 应用程序不归该团队的组织所有,则组织所有者必须授予第三方访问权限才能使用此选项。这可以在组织管理员第一次登录 GitHub 时完成,也可以在 GitHub 组织设置中完成。不可与organizations字段结合使用。
对
identityProviders小节进行以下修改:更改供应商
名称,以匹配您在 GitHub 上配置回调 URL。例如,如果您将回调 URL 定义为
https://myapiserver.com:8443/oauth2callback/github/,则name必须是github。-
将
clientID更改为您之前注册的 GitHub 中的客户端 ID。 -
将
clientSecret改为 之前注册的 GitHub 中的 Client Secret。 -
更改
organizations或teams,使其包含一个或多个 GitHub 机构或团队的列表,用户必须具有成员资格才能进行身份验证。如果指定,只有至少是一个列出的机构或团队的成员的 GitHub 用户才能登录。如果未指定,则具有有效 GitHub 帐户的任何人都可以登录。
- 保存您的更改并关闭该文件。
启动 OpenShift Container Platform API 服务器,指定您刚才修改的配置文件:
$ openshift start master --config=<path/to/modified/config>/master-config.yaml
配置后,任何登录 OpenShift Container Platform Web 控制台的用户都将提示使用其 GitHub 凭证登录。首次登录时,用户必须点击 授权应用程序 来允许 GitHub 使用其用户名、密码和机构成员资格。然后,用户会被重新重定向到 Web 控制台。