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
显然是"观众&#34 )。这是--oidc-client-id
应该匹配的吗?我离开了吗?
答案 0 :(得分:0)
这可以从id tokens上的kubernetes文档中解释。
如您所见,身份提供者是一个单独的系统。例如,如您所示,这可以是MS Azure AD或Google。
当您注册身份提供者时,您会得到重要的回报。 client id
就是这样一个重要的参数。如果您了解openid连接流程,则需要在遵循流程时提供此 client id
。如果流程完成,您将返回 id token
。 id token
必须拥有声明 aud
,这是发出令牌的受众。
当您验证 id token
时,必须验证您是否在受众列表中。更多信息可以从spec找到。
引自规范,
客户必须验证aud(受众)声明是否包含在iss(发行人)声明中作为受众标识的发行人处注册的client_id值
现在,kubernetes使用持票人令牌。这里使用的令牌是 id tokens
。要验证令牌,它应该特别了解受众。这使API服务器能够验证为进行调用的特定客户端发出的令牌。从而授权呼吁成功。