ADAL 查询安全组

ADAL query security groups

我有一个系统可以通过 Azure 上的 Web api 登录本机 wpf 应用程序。

AuthenticationContext authContext = new AuthenticationContext(string.Format("https://login.windows.net/{0}", authority));
AuthenticationResult tokenAuthResult = authContext.AcquireTokenAsync(resource, clientId, new Uri(redirectUri), new PlatformParameters(PromptBehavior.Auto)).Result;

if (tokenAuthResult == null) return;          

Credentials.RestCredentials = new TokenCredentials(tokenAuthResult.AccessToken);

Credentials.UserName = string.Concat(tokenAuthResult.UserInfo.GivenName, " ", tokenAuthResult.UserInfo.FamilyName);

这一切都很完美,返回令牌等。 用户都在 ADAL 中,并且有针对他们的关联组(这些都是 O365 用户)。 我希望能够查询登录用户关联的组是什么。 我是否需要使用 Graph api 进行新的调用? 我是否使用返回的令牌? 我在这里有点迷路了。 提前致谢 斯科特

一种简单的方法是在 Azure AD 中转到您的应用程序注册,单击 Manifest,然后修改 groupMembershipClaims 属性:

"groupMembershipClaims": "SecurityGroup",

这将导致 Id 令牌包含用户的组 ID。 不过它确实有限制,只能包含一定数量的组,在这种情况下,您必须从 Graph API 中获取它们。

这是您在这种情况下需要调用的端点:https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/functions-and-actions#getMemberGroups

添加到@juunas 的回答中,以下示例active-directory-dotnet-webapp-groupclaims 详细解释了事情。

特别是 Step 3: Configure your application to receive group claims 解释了清单中的应用程序配置。

另请参阅 https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-token-and-claims#claims-in-idtokens

中与组相关的声明