代表客户发布此问题:
我们正在尝试将Kubernetes OIDC身份验证与Azure AD集成。
根据文档为了使用用户组,我们需要将以下选项传递给Kubernetes API服务:
--oidc-groups-claim user_roles
Api服务使用user_roles
来查找用户在Azure AD返回的JWT中成员的组的组名。
但是,当我们解码Azure AD返回的JWT时,我们无法在返回的JWT中找到任何名为user_roles
的字段。解码后的JWT看起来像这样(编辑):
{
"aud": "spn:XXX",
"iss": "https://sts.windows.net/XXX/ ",
"iat": XXX,
"nbf": XXX,
"exp": XXX,
"acr": "1",
"aio": "XXX",
"amr": [
"pwd",
"mfa"
],
"appid": "XXX",
"appidacr": "0",
"family_name": "Foo",
"given_name": "Bar",
"groups": [
"gid1",
"gid2"
],
"ipaddr": "XXX",
"name": "Foo Bar",
"oid": "XXX",
"onprem_sid": "XXX",
"scp": "user_impersonation",
"sub": "XXX",
"tid": "XXX",
"unique_name": "XXX",
"upn": "XXX",
"uti": "XXX",
"ver": "1.0"
}
如您所见,返回的JWT中没有user_role字段。有什么我们缺少的,即。我们是否应该在Azure AD中启用一些设置,这些设置将使Azure返回user_role填充用户所属的组名? 我们希望得到的JWT应该看起来像这样(请注意user_role字段):
https://github.com/kubernetes/kubernetes/issues/33290#issue-178672086
{
"iss": "XXX",
"aud": "XXX",
"exp": XXX,
"jti": "XXX",
"iat": XXX,
"nbf": XXX,
"sub": "mmosley",
"user_role": [
"admin",
"users",
"approvers"
],
"email": "XXX"
}
非常感谢任何帮助或指示。
答案 0 :(得分:1)
首先,正如我所知,AAD id_token
仅支持role
声明,而非user_role
。可以通过添加AAD应用程序清单的id_token
属性将其添加到appRoles
中。
需要位于theconfig中以匹配Azure AAD检索到的令牌中的受众。
其次,--oidc-groups-claim
不应使用user_role
声明。根据我的理解,它应该groups
与groups
中的id_token
声明匹配。
此外,您可以参考this blog和this sample将Kubernetes RBAC与Azure AD集成。
中查看有关Kubernetes的RBAC身份验证的更多详细信息