C# 从Azure AD为RBAC检索用户组成员资格

C# 从Azure AD为RBAC检索用户组成员资格,c#,azure,asp.net-web-api,rbac,adal,C#,Azure,Asp.net Web Api,Rbac,Adal,我已经在WPF(本地客户端)中创建了一个测试应用程序。此客户端正在通过ADAL库与Azure进行身份验证,我在登录后成功获取令牌。我想做的是获取用户所属的组的列表,以便我可以使用该组作为访问数据的访问控制 到目前为止: 已成功使用Azure设置我的本机客户端,并已设置其“Windows Azure Active Directory”委托权限以“读取目录数据”和“启用登录并读取用户配置文件”。 登录后获取令牌 读取用户的配置文件信息 创建了用户和组的列表,并将它们添加到Azure AD中各自的

我已经在WPF(本地客户端)中创建了一个测试应用程序。此客户端正在通过ADAL库与Azure进行身份验证,我在登录后成功获取令牌。我想做的是获取用户所属的组的列表,以便我可以使用该组作为访问数据的访问控制

到目前为止:

  • 已成功使用Azure设置我的本机客户端,并已设置其“Windows Azure Active Directory”委托权限以“读取目录数据”和“启用登录并读取用户配置文件”。

  • 登录后获取令牌

  • 读取用户的配置文件信息
  • 创建了用户和组的列表,并将它们添加到Azure AD中各自的组中
当我尝试使用以下设置查询Azure图形时

private async void ReadUserRoles(object sender, RoutedEventArgs e)
        {
            var result = authContext.AcquireToken(resource, clientID, redirectUri);
            var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
            var userID = result.UserInfo.UniqueId;
            var url = string.Format("{0}{1}/users/{2}/memberOf?api-version=2013-04-05", "https://graph.windows.net/", tenantID, userID);
            var msg = await httpClient.GetAsync(url);

            var userRoles = await msg.Content.ReadAsStringAsync();
            MessageBox.Show(userRoles);
        }
图形查询取自: 但是我得到了一个未经授权的错误。我登录的用户是Azure中的“全局管理员”。完整的错误消息是:

{"odata.error":{"code":"Authentication_MissingOrMalformed",
"message":{"lang":"en","value":"Access Token missing or malformed."},"values":null}}

我的主要目标是设置一个应用程序,在该应用程序中,通过WPF客户端根据用户在AD中的成员身份访问数据。

您不再需要查询图形来获取组信息,我们有一个新功能,将在令牌中提供这些信息。看


链接不再工作,但可能有助于链接断开