Azure AD 应用清单 - 添加的用户将拥有“Approles.value”,组没有

问题描述

我们已经在 Azure AD 中创建了一个应用程序,到目前为止一切正常。 我们在 Manifest AppUser & AppAdmin 中定义了两个角色

如果我将 ADUser 作为 AppUser 添加到 Applicton,jwt 令牌的值将是“AppUser”-> 到目前为止一切顺利,按预期工作。

问题开始于添加组时,ADUser 是其中的成员。 JWT 令牌不再具有“AppUser”值。

    appRoles": [
        {
            "allowedMemberTypes": [
                "User"
            ],"description": "Standard user can see basic information","displayName": "AppUser","id": "--------------","isEnabled": true,"lang": null,"origin": "Application","value": "User"
        },#
#
# some other values
#
#
"groupMembershipClaims": "ApplicationGroup",

这是设计使然,还是清单配置错误? 我们使用 Adal 作为库。

解决方法

所以,

经过调查和大量测试我们发现,用户继承只对顶级应用组有效。

在我们的示例中,我们在应用程序中有两种用户类型:

  • 用户
  • 管理员

因此,我们在 Azure AD 中的应用程序中添加了一个名为 app-users 的组,并赋予了正确的“用户”。只要将 ADUser 按名称直接添加到“app-users”ADGroup,一切都很好。但是如果我们将另一个 ADGroup- __coolAPPUsergrou__p - 添加到现有的“app-users”,“coolAPPUsergroup”中的所有用户都不会拥有应用程序值“User”在 jwt 令牌中。 原因是,在这种情况下,继承不起作用。

为了解决这个问题,我们将 ADGroup coolAPPUsergroup 直接添加到应用程序中 - 与 app-users 处于同一级别 - 和 tada - > 很有魅力。

我建议在 Azure 云门户中进行此管理,因为您会收到关于继承的错误。如果您在本地 AD 上执行此操作,则将组添加到现有 AppADGroup 中是完美的选择,但它不起作用。