将 Kubernetes 设置为使用 OpenID Connect 时,--oidc-client-id 参数的用途是什么?

What is the purpose of the --oidc-client-id parameter when setting Kubernetes up to use OpenID Connect?

Kubernetes documentation related to OpenID Connect 提到,作为设置的一部分,您需要向 API 服务器提供一些参数:

--oidc-client-id: A client id that all tokens must be issued for.

关于这将如何映射到 something returned by the OpenID Connect-conformant Google identity provider

没有其他解释

不知道这个参数值有什么用。它会匹配解码后的 JWT 令牌中的某些内容吗?

看起来 Google 身份提供者返回的 id_token 可能在解码后在其 aud 字段中包含某些内容(aud 显然是 "audience").这是 --oidc-client-id 应该匹配的吗?我离题了吗?

这可以从 id tokens 上的 kubernetes 文档中得到解释。

如您所见,身份提供者是一个独立的系统。例如,这可以是 MS Azure AD 或 Google,如您所示。

当您注册身份提供者时,您会在 return 中获得重要的东西。 client id 就是这样一个重要的参数。如果您了解 openid 连接流程,则需要在遵循该流程时提供此 client id。如果流程完成,您将 return 一个 id tokenid token 必须有一个声明,aud 是为令牌发行的受众。

当您验证 id token 时,您 必须 验证您在受众群体列表中。可以从 spec.

中找到更多内容

引用规范,

The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified by the iss (issuer) Claim as an audience

现在,kubernetes 使用不记名令牌。这里使用的标记是id tokens。要验证令牌,它应该特别了解受众。这使 API 服务器能够验证令牌是为发出调用的特定客户端颁发的。从而授权调用成功。