j90*_*749 26 c# permissions azure azure-active-directory azure-ad-graph-api
使用时我尝试访问Graph Service Client时收到错误:
代码:Authorization_RequestDenied
消息:没有足够的权限来完成操作.
在研究此错误后,最常见的解决方案是设置API的权限.这已经完成,并具有读取基本/完整配置文件的权限.
我删除并重新添加了API.
下面是我的AzureAuthenticationProvider类中的代码,它继承自IAuthenticationProvider:
public class AzureAuthenticationProvider : IAuthenticationProvider
{
private string _azureDomain = "myDevDom.onmicrosoft.com";
public async Task AuthenticateRequestAsync(HttpRequestMessage request)
{
try
{
string clientId = "2b823c67-1b0d-4a10-a9e1-737142516f5q";
string clientSecret = "xxxxxx";
AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/" + _azureDomain + "/oauth2/token");
ClientCredential credentials = new ClientCredential(clientId, clientSecret);
AuthenticationResult authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", credentials);
request.Headers.Add("Authorization", "Bearer " + authResult.AccessToken);
}
catch (Exception ex)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将客户端密钥更改为无效的ID并且它引发了错误,因此客户端密钥是正确的.我还尝试通过更改访问令牌来验证访问令牌是否有效,这也会返回错误.
上面的代码似乎工作正常.
以下是我尝试访问Azure AD的代码:
public async Task<IGraphServiceUsersCollectionPage> GetUsersByLastName(string lastname)
{
GraphServiceClient graphClient = new GraphServiceClient(new AzureAuthenticationProvider());
string filter = String.Format("startswith(surname, '{0}')", lastname);
IGraphServiceUsersCollectionPage users = await graphClient.Users.Request().Filter(filter).GetAsync(); //Fails on this line
return users;
}
Run Code Online (Sandbox Code Playgroud)
Nan*_* Yu 10
请参考以下步骤:
从您的屏幕截图中,您似乎已授予(azure ad graph api)的Read and write directory data应用程序权限Windows Azure Active Directory.由于您使用的是microsoft graph(https://graph.microsoft.com/),因此您需要为以下内容授予应用程序权限Microsoft Graph:

由于您是AAD的管理员,因此您可以通过Grant permission上面屏幕截图中显示的点击按钮为组织中的用户授予权限.
然后,您可以使用您的代码(客户端凭据流来获取令牌)和查询用户信息.如果您检查azure广告发出的访问令牌中的声明,则可以在声明中找到Directory.Read.All权限roles.
对我来说,解决这个问题的关键是提示:
要将Graph API与B2C租户一起使用,您需要使用Azure门户中的通用应用程序注册菜单(所有服务,默认情况下不是收藏的星号)注册专用应用程序,而不是Azure AD B2C的应用程序菜单.您无法重用已在Azure AD B2C的"应用程序"菜单中注册的已存在的B2C应用程序.
有关详细信息,请参阅AD B2C aPI访问演示页面
小智 5
就我而言,删除用户不起作用。我采取了以下步骤,它开始为我工作。
去Azure Active Directory > Roles and administrators > Click on 'User administrator' > click on '+ Add assignment' to add your app。(即使用 AAD Graph REST API 与 Azure Active Directory 交互的控制台应用程序)。
希望它可以帮助某人。
| 归档时间: |
|
| 查看次数: |
28274 次 |
| 最近记录: |