从 Azure AD 中为 RBAC 检索用户组成员资格
Retrieve a user group membership from Azure AD for RBAC
我已经在 WPF(本机客户端)中创建了一个测试应用程序。此客户端正在通过 ADAL 库向 Azure 进行身份验证,我在登录后成功获取了令牌。我想做的是获取用户所属组的列表,以便我可以将此组用作访问数据的访问控制。
到目前为止:
使用 Azure 成功设置我的本机客户端,并将其 "Windows Azure Active Directory" 委托权限授予 "Read directory data" 和 "Enable sign-on and read users' profiles"。
登录后获取token
- 读取用户的个人资料信息
- 创建了用户和组列表,并将它们添加到 Azure AD 中各自的组中。
当我尝试使用以下设置查询 Azure GRAPH 时
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);
}
GRAPH 查询取自:http://msdn.microsoft.com/en-us/library/azure/jj126255.aspx
但后来我得到一个未经授权的错误。我登录的用户是 Azure 中的 "Global Administrator"。完整的错误信息是:
{"odata.error":{"code":"Authentication_MissingOrMalformed",
"message":{"lang":"en","value":"Access Token missing or malformed."},"values":null}}
我的主要目标是设置一个应用程序,根据用户在 AD 中的成员身份使用 WPF 客户端访问数据。
您不再需要查询图表来获取群组信息,我们有一项新功能可以在令牌中提供这些信息。参见 http://www.dushyantgill.com/blog/2014/12/10/authorization-cloud-applications-using-ad-groups/
link 不再有效,但是 this link 可能会有帮助
我已经在 WPF(本机客户端)中创建了一个测试应用程序。此客户端正在通过 ADAL 库向 Azure 进行身份验证,我在登录后成功获取了令牌。我想做的是获取用户所属组的列表,以便我可以将此组用作访问数据的访问控制。
到目前为止:
使用 Azure 成功设置我的本机客户端,并将其 "Windows Azure Active Directory" 委托权限授予 "Read directory data" 和 "Enable sign-on and read users' profiles"。
登录后获取token
- 读取用户的个人资料信息
- 创建了用户和组列表,并将它们添加到 Azure AD 中各自的组中。
当我尝试使用以下设置查询 Azure GRAPH 时
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);
}
GRAPH 查询取自:http://msdn.microsoft.com/en-us/library/azure/jj126255.aspx 但后来我得到一个未经授权的错误。我登录的用户是 Azure 中的 "Global Administrator"。完整的错误信息是:
{"odata.error":{"code":"Authentication_MissingOrMalformed",
"message":{"lang":"en","value":"Access Token missing or malformed."},"values":null}}
我的主要目标是设置一个应用程序,根据用户在 AD 中的成员身份使用 WPF 客户端访问数据。
您不再需要查询图表来获取群组信息,我们有一项新功能可以在令牌中提供这些信息。参见 http://www.dushyantgill.com/blog/2014/12/10/authorization-cloud-applications-using-ad-groups/
link 不再有效,但是 this link 可能会有帮助