问题描述
我们已经在 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 中是完美的选择,但它不起作用。