13.3.8. 基本身份验证(远程)
基本身份验证是一种通用后端集成机制,用户可以使用针对远程身份提供程序验证的凭证来登录 OpenShift Container Platform。
由于基本身份验证是通用的,因此您可以在高级身份验证配置中使用此身份提供程序。您可以配置 LDAP 故障转移,或使用 容器化基本身份验证 存储库作为另一个高级远程基本身份验证配置的起点。
基本身份验证必须使用 HTTPS 连接到远程服务器,以防止遭受用户 ID 和密码嗅探以及中间人攻击。
配置了 BasicAuthPasswordIdentityProvider
后,用户将其用户名和密码发送到 OpenShift Container Platform,然后通过发出服务器对服务器请求来传递凭证作为 Basic Auth 标头来针对远程服务器验证这些凭证。这要求用户在登录期间向 OpenShift Container Platform 发送凭证。
这只适用于用户名/密码登录机制,并且 OpenShift Container Platform 必须能够向远程身份验证服务器发出网络请求。
在 identityProviders
小节中设置 BasicAuthPasswordIdentityProvider
,以使用 server-to-server 基本身份验证请求对远程服务器验证用户名和密码。针对受基本身份验证保护并返回 JSON 的远程 URL 验证用户名和密码。
401
响应表示身份验证失败。
非 200
状态或出现非空“error”键表示出现错误:
{"error":"Error message"}
200
状态并带有 sub
(subject)键则表示成功:
{"sub":"userid"} 1
- 1
- 主体必须是经过身份验证的用户所特有的,而且必须不可修改。
成功响应可能会(可选)提供额外的数据,例如:
使用
name
键的显示名称。例如:{"sub":"userid", "name": "User Name", ...}
使用
email
键的电子邮件地址。例如:{"sub":"userid", "email":"user@example.com", ...}
使用
preferred_username
键的首选用户名。这可用在唯一不可改主体是数据库密钥或 UID 且存在更易读名称的情形中。为经过身份验证的身份置备 OpenShift Container Platform 用户时,这可用作提示。例如:{"sub":"014fbff9a07c", "preferred_username":"bob", ...}
13.3.8.1. 在 master 上配置身份验证
如果您有:
已完成 Openshift 的安装,然后将 /etc/origin/master/master-config.yaml 文件复制到新目录中,例如:
$ mkdir basicauthconfig; cp master-config.yaml basicauthconfig
尚未安装 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=basicauthconfig
注意如果要使用 Ansible 安装,您必须将
identityProvider
配置添加到 Ansible playbook 中。如果在使用 Ansible 安装后使用以下步骤手动修改配置,那么每当您重新运行安装工具或升级时,您都会丢失任何修改。
编辑新的 master-config.yaml 文件的
identityProviders
小节,并复制 示例BasicAuthPasswordIdentityProvider
配置 并粘贴它来替换现有的小节:oauthConfig: ... identityProviders: - name: my_remote_basic_auth_provider 1 challenge: true 2 login: true 3 mappingMethod: claim 4 provider: apiVersion: v1 kind: BasicAuthPasswordIdentityProvider url: https://www.example.com/remote-idp 5 ca: /path/to/ca.file 6 certFile: /path/to/client.crt 7 keyFile: /path/to/client.key 8
- 1
- 此提供程序名称作为前缀放在返回的用户 ID 前,以此组成身份名称。
- 2
- 为
true
时,来自非 Web 客户端(如 CLI)的未经身份验证的令牌请求会为此提供程序发送WWW-Authenticate
质询标头。 - 3
- 为
true
时,来自 Web 客户端(如 Web 控制台)的未经身份验证的令牌请求会重定向到由该供应商支持的登录页面。 - 4
- 控制如何在此提供程序的身份和用户对象之间建立映射,如上 所述。
- 5
- 接受基本身份验证标头中凭证的 URL。
- 6
- 可选:用于验证所配置 URL 的服务器证书的证书捆绑包。
- 7
- 可选:向配置的 URL 发出请求时要出现的客户端证书。
- 8
- 客户端证书的密钥。如果指定了
certFile
,则需要此项。
对
identityProviders
小节进行以下修改:-
将供应商
名称
设置为与您的部署的唯一且相关内容。此名称作为前缀放在返回的用户 ID 前,以此组成身份名称。 -
如果需要,设置
mappingMethod
来控制如何在提供程序的身份和用户对象之间建立映射。 -
指定
HTTPS
URL 用于连接到接受基本身份验证标头中凭证的服务器。 -
(可选)将
ca
设置为证书捆绑包,以使用 以验证所配置 URL 的服务器证书,或将其留空,以使用系统信任的根证书。 -
(可选)删除或将
certFile
设置为客户端证书,以便在向配置的 URL 发出请求时显示。 -
如果指定了
certFile
,您必须将keyFile
设置为客户端证书的密钥。
- 保存您的更改并关闭该文件。
启动 OpenShift Container Platform API 服务器,指定您刚才修改的配置文件:
$ openshift start master --config=<path/to/modified/config>/master-config.yaml
配置后,系统会提示您使用其基本身份验证凭证登录 OpenShift Container Platform Web 控制台。