【发布时间】:2018-01-09 04:31:25
【问题描述】:
我正在尝试通过应用程序访问流在我自己和第三方 Azure Active Directory 中搜索用户。 我使用以下内容获取有效令牌。
string authority = string.Format(CultureInfo.InvariantCulture, "https://login.microsoftonline.com/{0}", "<AD>.onmicrosoft.com");
AuthenticationContext authContext = new AuthenticationContext(authority);
ClientCredential clientCredential = new ClientCredential(<clientId>, <appKey>);
AuthenticationResult result = await authContext.AcquireTokenAsync("https://graph.windows.net" , clientCredential);
string TokenForApplication = result.AccessToken;
我使用此方法搜索具有给定名称的用户。
public async Task<List<IUser>> UsersSearch(IActiveDirectoryClient client, string searchString)
{
List<IUser> usersList = null;
IPagedCollection<IUser> searchResults = null;
IUserCollection userCollection = client.Users;
searchResults = await userCollection.Where(user =>
user.UserPrincipalName.StartsWith(searchString) ||
user.GivenName.StartsWith(searchString)).Take(10).ExecuteAsync();
usersList = searchResults.CurrentPage.ToList();
return usersList;
}
这一切都在我第一次设置应用程序的 Azure AD 上运行良好。
但是当我尝试在另一个 Azure 活动目录中使用该应用时,我收到错误:Authorization_RequestDenied: Insufficient privileges to complete the operation."
在我原来的 Azure AD 中,我设置了应用程序访问图形 API 和搜索用户所需的所有权限:
在第三方 Azure AD 中,我已经完成了管理流程并授予应用程序所有需要的权限:
据我所知,我获得了每个 Azure AD 的有效令牌,但每当我尝试访问第三方 Azure AD 时,都会收到相同的错误。
我更改要访问的 AD 的方法是更改 <AD> in
string authority = string.Format(CultureInfo.InvariantCulture, "https://login.microsoftonline.com/{0}", "<AD>.onmicrosoft.com");
我保持其他一切不变。
【问题讨论】:
标签: validation oauth-2.0 azure-active-directory microsoft-graph-api adal