13.3.13. OpenID 连接
在 identityProviders
小节中设置 OpenIDIdentityProvider
,以使用授权代码流与 OpenID Connect 身份提供程序 集成。
您可以将 Red Hat Single Sign-On 配置为 OpenShift Container Platform 的 OpenID Connect 身份提供程序。
不支持 ID Token 和 UserInfo 解密。
默认情况下,需要 openid 范围。如果必要,可在 extraScopes
字段中指定额外的范围。
声明可读取自从 OpenID 身份提供程序返回的 JWT id_token
;若有指定,也可读取自从 UserInfo
URL 返回的 JSON。
必须至少配置一个声明,以用作用户的身份。标准的身份声明是 sub
。
您还可以指定将哪些声明用作用户的首选用户名、显示名称和电子邮件地址。如果指定了多个声明,则使用第一个带有非空值的声明。标准的声明是:
| “subject identifier”的缩写。 用户在签发者处的远程身份。 |
|
置备用户时的首选用户名。用户希望使用的简写名称,如 |
| 电子邮件地址。 |
| 显示名称。 |
如需更多信息,请参阅 OpenID 声明文档。
使用 OpenID Connect 身份提供程序要求用户使用 <master>/oauth/token/request
来获取令牌,以便用于命令行工具。
使用 OpenIDIdentityProvider
的标准 master 配置
oauthConfig: ... identityProviders: - name: my_openid_connect 1 challenge: true 2 login: true 3 mappingMethod: claim 4 provider: apiVersion: v1 kind: OpenIDIdentityProvider clientID: ... 5 clientSecret: ... 6 claims: id: 7 - sub preferredUsername: - preferred_username name: - name email: - email urls: authorize: https://myidp.example.com/oauth2/authorize 8 token: https://myidp.example.com/oauth2/token 9
- 1
- 此提供程序名称作为前缀放在身份声明值前,以此组成身份名称。它还可用来构建的重定向 URL。
- 2
- 为
true
时,来自非 Web 客户端(如 CLI)的未经身份验证的令牌请求会为此提供程序发送WWW-Authenticate
质询标头。这要求 OpenID 供应商支持 Resource Owner Password Credentials 授权流。 - 3
- 当为
true
时,来自 Web 客户端(如 Web 控制台)的未经身份验证的令牌请求会重定向到要登录的授权 URL。 - 4
- 控制如何在此提供程序的身份和用户对象之间建立映射,如上 所述。
- 5
- 在 OpenID 提供程序中注册的客户端的客户端 ID。该客户端必须能够重定向到
<master>/oauth2callback/<identityProviderName>
。 - 6
- 客户端机密。此值也可在 环境变量、外部文件或加密文件 中提供。
- 7
- 用作身份的声明的列表。使用第一个非空声明。至少需要一个声明。如果列出的声明都没有值,身份验证会失败。例如,这使用返回的
id_token
中的sub
声明的值作为用户的身份。 - 8
- OpenID spec 中描述的 授权端点。必须使用
https
。 - 9
- OpenID spec 中描述的令牌端点。必须使用
https
。
也可以指定自定义证书捆绑包、额外范围、额外授权请求参数和 userInfo
URL:
例 13.9. 使用 OpenIDIdentityProvider
的完整 Master 配置
oauthConfig: ... identityProviders: - name: my_openid_connect challenge: false login: true mappingMethod: claim provider: apiVersion: v1 kind: OpenIDIdentityProvider clientID: ... clientSecret: ... ca: my-openid-ca-bundle.crt 1 extraScopes: 2 - email - profile extraAuthorizeParameters: 3 include_granted_scopes: "true" claims: id: 4 - custom_id_claim - sub preferredUsername: 5 - preferred_username - email name: 6 - nickname - given_name - name email: 7 - custom_email_claim - email urls: authorize: https://myidp.example.com/oauth2/authorize token: https://myidp.example.com/oauth2/token userInfo: https://myidp.example.com/oauth2/userinfo 8