7.9. 配置 OpenID Connect 身份提供程序


配置 oidc 身份提供程序,使用授权代码流与 OpenID Connect 身份提供程序集成。

您可以将 Red Hat Single Sign-On 配置为 OpenShift Container Platform 的 OpenID Connect 身份提供程序。

重要

OpenShift Container Platform 中的 Authentication Operator 要求配置的 OpenID Connect 身份提供程序实现 OpenID Connect Discovery 规格。

注意

不支持 ID Token 和 UserInfo 解密。

默认情况下,需要 openid 范围。如果必要,可在 extraScopes 字段中指定额外的范围。

声明可读取自从 OpenID 身份提供程序返回的 JWT id_token;若有指定,也可读取自从 UserInfo URL 返回的 JSON。

必须至少配置一个声明,以用作用户的身份。标准的身份声明是 sub。

您还可以指定将哪些声明用作用户的首选用户名、显示名称和电子邮件地址。如果指定了多个声明,则使用第一个带有非空值的声明。标准的声明是:

sub

“subject identifier”的缩写。 用户在签发者处的远程身份。

preferred_username

置备用户时的首选用户名。用户希望使用的简写名称,如 janedoe。通常,与身份验证系统中用户的登录或用户名对应的值,如用户名或电子邮件。

email

电子邮件地址。

name

显示名称。

如需更多信息,请参阅 OpenID 声明文档。

注意

使用 OpenID Connect 身份提供程序要求用户使用 <master>/oauth/token/request 来获取令牌,以便用于命令行工具。

默认情况下,集群中只有 kubeadmin 用户。要指定身份提供程序,您必须创建一个自定义资源 (CR) 来描述该身份提供程序并把它添加到集群中。

注意

OpenShift Container Platform 用户名不能包括 /、: 和 %。

7.9.2. 创建 secret

身份提供程序使用 openshift-config 命名空间中的 OpenShift Container Platform secret 来包含客户端 secret、客户端证书和密钥。

  • 您可以使用以下命令,定义一个包含字符串的 OpenShift Container Platform Secret。

    $ oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config
  • 您可以使用以下命令,定义一个文件(如证书文件)内容的 OpenShift Container Platform Secret。

    $ oc create secret generic <secret_name> --from-file=/path/to/file -n openshift-config

7.9.3. 创建 ConfigMap

身份提供程序使用 openshift-config 命名空间中的 OpenShift Container Platform ConfigMap 来包含证书颁发机构捆绑包。主要用于包含身份提供程序所需的证书捆绑包。

  • 使用以下命令,定义包含证书颁发机构的 OpenShift Container Platform ConfigMap。证书颁发机构必须存储在 ConfigMap 的 ca.crt 键中。

    $ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config

7.9.4. OpenID Connect CR 示例

以下自定义资源 (CR) 显示 OpenID Connect 身份提供程序的参数和可接受值。

如果您必须指定自定义证书捆绑包、额外范围、额外授权请求参数或 userInfo URL,请使用完整的 OpenID Connect CR。

标准 OpenID Connect CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: oidcidp 
1

    mappingMethod: claim 
2

    type: OpenID
    openID:
      clientID: ... 
3

      clientSecret: 
4

        name: idp-secret
      claims: 
5

        preferredUsername:
        - preferred_username
        name:
        - name
        email:
        - email
      issuer: https://www.idp-issuer.com 
6

1
此提供程序名称作为前缀放在身份声明值前,以此组成身份名称。它还可用来构建的重定向 URL。
2
控制如何在此提供程序的身份和用户对象之间建立映射。
3
在 OpenID 提供程序中注册的客户端的客户端 ID。该客户端必须能够重定向到 https://oauth-openshift.apps.<cluster_name>.<cluster_domain>/oauth2callback/<idp_provider_name>。
4
对包含客户端 secret 的 OpenShift Container Platform Secret 的引用。
5
用作身份的声明的列表。使用第一个非空声明。至少需要一个声明。如果列出的声明都没有值,身份验证会失败。例如,这使用返回的 id_token 中的 sub 声明的值作为用户的身份。
6
OpenID 规范中描述的签发者标识符。必须使用 https,且不带查询或分段组件。

完整 OpenID Connect CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: oidcidp
    mappingMethod: claim
    type: OpenID
    openID:
      clientID: ...
      clientSecret:
        name: idp-secret
      ca: 
1

        name: ca-config-map
      extraScopes: 
2

      - email
      - profile
      extraAuthorizeParameters: 
3

        include_granted_scopes: "true"
      claims:
        preferredUsername: 
4

        - preferred_username
        - email
        name: 
5

        - nickname
        - given_name
        - name
        email: 
6

        - custom_email_claim
        - email
      issuer: https://www.idp-issuer.com

1
可选:对包含 PEM 编码证书颁发机构捆绑包的 OpenShift Container Platform ConfigMap 的引用,以用于验证所配置 URL 的服务器证书。
2
除 openid 范围外的可选请求范围列表,在授权令牌请求期间使用。
3
添加至授权令牌请求的附加参数的可选映射。
4
为此身份置备用户时用作首选用户名的声明的列表。使用第一个非空声明。
5
用作显示名称的声明列表。使用第一个非空声明。
6
用作电子邮件地址的声明列表。使用第一个非空声明。

7.9.5. 将身份提供程序添加到集群中

安装集群之后,请在其中添加一个身份提供程序,以便您的用户可以进行身份验证。

先决条件

  • 创建 OpenShift Container Platform 集群。
  • 为身份提供程序创建自定义资源 (CR)。
  • 必须已经以管理员身份登录。

流程

  1. 应用定义的 CR:

    $ oc apply -f </path/to/CR>
    注意

    如果一个 CR 不存在,oc apply 会创建一个新的 CR,并可能会触发以下警告 Warning: oc apply should be used on resources created by either oc create --save-config or oc apply。在这种情况下,您可以忽略这个警告。

  2. 从 OAuth 服务器获取令牌。

    只要 kubeadmin 用户已被删除,oc login 命令就会提供如何访问可以获得令牌的网页的说明。

    您还可以通过使用 web 控制台的 (?)访问此页面。 Help Command Line Tools Copy Login Command.

  3. 登录到集群,提供令牌进行身份验证。

    $ oc login --token=<token>
    注意

    这个身份提供程序不支持使用用户名和密码登录。

  4. 确认用户登录成功,并显示用户名。

    $ oc whoami

7.9.6. 使用 web 控制台配置身份提供程序

通过 web 控制台而非 CLI 配置身份提供程序 (IDP)。

先决条件

  • 您必须以集群管理员身份登录到 web 控制台。

流程

  1. 导航至 Administration Cluster Settings。
  2. 在 Global Configuration 选项卡下,点 OAuth。
  3. 在 Identity Providers 部分中,从 Add 下拉菜单中选择您的身份提供程序。
注意

您可以通过 web 控制台来指定多个 IDP,而不会覆盖现有的 IDP。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部