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 上配置身份验证

  1. 如果您有:

    • 已完成 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 安装后使用以下步骤手动修改配置,那么每当您重新运行安装工具或升级时,您都会丢失任何修改。

  2. 编辑新的 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 小节进行以下修改:

    1. 将供应商名称设置为与您的部署的唯一且相关内容。此名称作为前缀放在返回的用户 ID 前,以此组成身份名称。
    2. 如果需要,设置 mappingMethod 来控制如何在提供程序的身份和用户对象之间建立映射。
    3. 指定 HTTPS URL 用于连接到接受基本身份验证标头中凭证的服务器。
    4. (可选)将 ca 设置为证书捆绑包,以使用 以验证所配置 URL 的服务器证书,或将其留空,以使用系统信任的根证书。
    5. (可选)删除或将 certFile 设置为客户端证书,以便在向配置的 URL 发出请求时显示。
    6. 如果指定了 certFile,您必须将 keyFile 设置为客户端证书的密钥。
  3. 保存您的更改并关闭该文件。
  4. 启动 OpenShift Container Platform API 服务器,指定您刚才修改的配置文件:

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

配置后,系统会提示您使用其基本身份验证凭证登录 OpenShift Container Platform Web 控制台。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.