Ama*_*rma 5 c# rest azure azure-active-directory microsoft-graph
我正在尝试使用C#中的.net应用程序中的Graph REST API自动获取AD报告.
我在新的Azure门户中创建了一个服务主体(使用应用程序注册).此服务主体具有为OAuth 2.0配置的所有必需信息:
服务主体还具有为"Microsoft Graph"适当设置的权限,作为"读取目录数据".
我能够从.net应用程序使用REST API获取令牌,但是当我尝试在我的代码中使用此令牌时,我收到错误:" 无法检查appId的目录读取权限 ".
我使用令牌进行REST API调用的代码是(我已经更改了租户ID等的GUID):
var client2 = new RestClient("https://graph.windows.net/a0a00aa0-aaaa-0000-0000-00000e0000aa/reports?api-version=beta");
var request2 = new RestRequest(Method.GET);
request2.AddHeader("cache-control", "no-cache");
request2.AddHeader("authorization", "Bearer " + token);
request2.AddHeader("content-type", "application/json");
IRestResponse response2 = client2.Execute(request2);
Console.WriteLine(response2.Content);
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
{
"error":{
"code":"Unable to check Directory Read access for appId: 00000aa-aaaa-0a0a-0000-000000000000","message":"message:Unable to check Directory Read access for appId: 00000aa-aaaa-0a0a-0000-000000000000\n client-request-id:00aa0a0a-48bf-4bf8-ae40-a2976a3c6910 timestamp:2017-04-28 01:38:52Z"
}
}
Run Code Online (Sandbox Code Playgroud)
我已经检查过,凭据没有按照某些博客的指示缓存.我甚至从一个空白的VM运行代码并得到了同样的错误.任何指针来解决此错误或可能导致此错误的原因.
我解决了这个问题.我知道解决这个问题的确切步骤.但我不知道潜在的概念.如果有人能通过PowerShell或GUI向我解释以及如何做到这一点(即使是2行),我会接受这个作为答案.我采取的步骤是:
我尝试过:我尝试在应用程序注册中的"必需权限"刀片上使用"授予权限",但这不起作用并导致相同的错误.
问题:我想了解下面的对话框究竟是做什么的,以及如何通过GUI或PowerShell执行此操作.
我测试了 api 调用并且它有效。在你的描述中:
\n\n\n\n\n\n\n服务主体还具有为“Microsoft Graph”适当设置的权限作为“读取目录数据”。
\n
您设置了“Microsoft Graph”(Microrosft Graph API) 的权限,但在代码中查询了 Azure AD Graph API( https://graph.windows.net/ ) 终结点以获取报告信息。这可能会导致问题。如果您想使用Azure AD Graph API,您需要为“Windows Azure Active Directory”设置权限。
\n\n更新
\n\n同意框架用于轻松开发多租户 Web 和本机客户端应用程序,这些应用程序需要访问受 Azure AD 租户保护的 Web API(与注册客户端应用程序的地方不同)。
\n\n对于多租户应用程序,当来自不同租户的用户首次登录应用程序时,Azure AD 会要求他们同意应用程序请求的权限。如果他们同意,则会在 user\xe2\x80\x99s 租户中创建称为服务主体的应用程序表示,并且可以继续登录。
\n\n仅应用程序权限始终需要租户管理员\xe2\x80\x99s 的同意。如果您的应用程序请求仅限应用程序的权限,并且用户尝试登录该应用程序,则会显示一条错误消息,指出用户\xe2\x80\x99无法同意。某些委派权限还需要租户管理员\xe2\x80\x99的同意。例如,“读取目录数据”权限。这意味着,对于普通用户(即不是租户全局管理员的用户) )要登录,必须先由全局管理员代表组织登录并同意权限。您需要使用管理员帐户来同意相关权限,如图所示。请点击这里和这里阅读有关用户和管理员同意的更多信息。
\n| 归档时间: |
|
| 查看次数: |
717 次 |
| 最近记录: |