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: 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>
; 的回调 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 控制台。