我已经将Azure AD应用程序配置为OIDC提供程序,并在配置EKS中关联OIDC。现在我想使用kubectl访问,但无法使用以下配置。
错误:无法连接到服务器:没有有效的id令牌,并且在没有刷新令牌的情况下无法刷新
kubectl config set-credentials aman
--auth-provider=oidc
--auth-provider-arg=idp-issuer-url=<my azure one>
--auth-provider-arg=client-id=<my client id>
--auth-provider-arg=client-secret=<my secret id>
而我可以使用相同细节的kubectl的oidc插件进行连接。我做错了什么?
我不明白它为什么要求刷新令牌。另外,我没有刷新令牌。
注意:我遵循EKS官方文档进行配置https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html和Kubernetes官方文档设置kubectlhttps://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-kubectl
有人能建议我在kubectl中不需要使用任何oidc插件吗?
所以,我一直在做一些研究,我想我找到了答案。我发布我的发现,这样如果有人在同一个问题上挣扎,它会有所帮助。
Kubernetes使用kubectl进行身份验证的方式是使用bear_token。现在,bear_token由access_token和refresh_token组成。但我们只能有id代币,这里有oidc插件。根据Kubernetes官方文档。https://kubernetes.io/docs/reference/access-authn-authz/authentication/
The first option is to use the kubectl oidc authenticator, which sets the id_token as a bearer token for all requests and refreshes the token once it expires.
换句话说,由于EKS只提供OIDC的身份验证,因此它只需要id_token。然后我们需要oidc插件的帮助,它可以将我们的id_token设置为bear_token。因此,我们不需要为oidc验证器插件提供任何刷新令牌。
p.S.
授权稍后由RBAC功能负责。在我的案例中,我将AD组映射到具有角色和角色绑定的Kubernetes组。