我有一个长期运行的应用程序,它使用FederatedAuthentication与Azure AD来管理基于声明的身份。我的应用程序清单设置为列出用户的所有安全组(因此我可以遍历他们所属的组列表)。
在该应用程序中,我有一个用户,该用户是单个顶级组的成员。该群体不是任何其他群体的成员。以前,当用户登录时,只有一个http://schemas.microsoft.com/ws/2008/06/identity/claims/groups
值附加到他们的ClaimsPrincipal,正确显示他们所属的单个组。
截至最近(过去几天)我的用户登录时,有两个http://schemas.microsoft.com/ws/2008/06/identity/claims/groups
值。其中一个仍然对应于它们所属的组,但是新组件与我的活动目录中的任何可见组的id(或者我可以看到的任何其他对象)都没有匹配:没有应用程序ID,也没有其他用户ID )。
这个幻影群组成员来自何处,有什么方法可以将其删除?
更新 - 应用程序清单中的groupMembershipClaims
设置为SecurityGroup
(不是All
)。
答案 0 :(得分:1)
在我的测试中,组声明将返回当前用户所属的Groups和DirectoryRoles的集合,结果类似于使用memberOf
azure ad graph api:
https://graph.windows.net/myorganization/users/{user_id}/$links/memberOf?api-version
即使我将groupMembershipClaims
设置为SecurityGroup
,我也会在我的令牌中获得相同的三个记录(2个组和1个目录角色)。我的帐户是我AAD的全球管理员。如果我将帐户设置为用户目录角色(非管理员角色),那么我只在组声明中获得两个组记录。
使用azure ad graph api,为了获得用户具有直接或传递成员身份的所有组,我们可以调用getMemberGroups函数。
如果您希望群组声明仅返回用户具有直接或可传递成员资格的群组,您可以在AAD userVoice中发送反馈。