代码之家  ›  专栏  ›  技术社区  ›  Joel Guerra

AD OIDC未返回user\u角色

  •  2
  • Joel Guerra  · 技术社区  · 7 年前

    代表客户发布此问题:

    我们正在尝试将Kubernetes OIDC身份验证与Azure AD集成。 根据文档,为了使用用户组,我们需要将以下选项传递给Kubernetes API服务: --oidc-groups-claim user_roles Api服务使用 user_roles 在Azure AD返回的JWT中查找用户所属组的组名。

    然而,当我们解码Azure AD返回的JWT时,我们找不到任何名为 用户\u角色 在返回的JWT中。解码后的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\u role字段。我们是否缺少任何东西,即我们是否应该在Azure AD中启用一些设置,以使用用户所属的组名填充Azure return user\u角色? 我们希望得到的JWT应该是这样的(请注意user\u 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"  
    }   
    

    任何帮助或指点都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sa Yang    7 年前

    首先,正如我所知,AAD id_token 仅支持 role 索赔,而不是 user_role 。可以将其添加到 id\u令牌 通过添加 appRoles AAD应用程序清单的属性。 需要配置中的位来匹配Azure AAD检索到的令牌的受众。

    第二 --oidc-groups-claim 不应使用 user\u角色 宣称根据我的理解,应该是 groups “组” 在中索赔 id\u令牌

    此外,您可以参考 this blog this sample 将Kubernetes RBAC与Azure AD集成。

    有关Kubernetes的RBAC身份验证的更多详细信息,请参见 this document.