Microsoft graph api 使用Azure应用程序/服务主体列出privilegedRoles
我正在尝试使用Azure的Active Directory中创建的应用程序请求 我在Graph API应用程序中为它提供了所有应用程序权限和委托权限,但没有任何效果 答案总是:Microsoft graph api 使用Azure应用程序/服务主体列出privilegedRoles,microsoft-graph-api,Microsoft Graph Api,我正在尝试使用Azure的Active Directory中创建的应用程序请求 我在Graph API应用程序中为它提供了所有应用程序权限和委托权限,但没有任何效果 答案总是: "error": { "code": "UnknownError", "message": "{\"message\":\"An error has occurred.\"}", "innerError": { "request-id": "3e1bb5cf-2d2e-402f-8648-27193b
"error": {
"code": "UnknownError",
"message": "{\"message\":\"An error has occurred.\"}",
"innerError": {
"request-id": "3e1bb5cf-2d2e-402f-8648-27193b28510a",
"date": "2018-06-06T14:26:02"
}
}
任何帮助都将不胜感激
更新1:该期刊物的完整复制本—
- 具有委托权限“Directory.AccessAsUser.All”(且无应用程序权限)的V2应用程序,重定向的url
步骤2:获取令牌
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'client_id=MY_APP_ID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=MY-APP-SECRET&grant_type=client_credentials' 'https://login.microsoftonline.com/MY_TENANT_ID/oauth2/v2.0/token'
得到如下回复:
{
"token_type": "Bearer",
"expires_in": 3599,
"ext_expires_in": 0,
"access_token": "SOME-VERY-LONG-TOKEN"
}
步骤3:尝试获取资源
curl -X GET -H "Authorization: Bearer SOME-VERY-LONG-TOKEN" 'https://graph.microsoft.com/beta/privilegedRoles'
错误:
{
"error": {
"code": "UnknownError",
"message": "{\"message\":\"An error has occurred.\"}",
"innerError": {
"request-id": "cc9c950c-369c-4fb5-8ec4-eb4048e32a5d",
"date": "2018-06-10T09:09:57"
}
}
}
您只能使用委派权限调用MSGraph PIM Api。 基本上,您需要执行以下设置:
有关更多详细信息,请参见能否提供一个示例,说明您使用的代码以及发送到API的承载令牌?@marclafler这有点复杂,因为它分布在多个java类中。不过,我使用相同的方法成功地从graph API获取用户和组,因此我认为问题并不存在。正如我提到的,令牌是通过服务主体/应用程序使用三元组(租户id、应用程序id、机密)创建的。没有看到一些代码或令牌,这只是一个猜测游戏。由于令牌不能同时持有应用程序和委托,了解您如何获得该令牌将解释很多。查看这篇文章以获得更深入的解释:@MarcLaFleur查看我的样本复制更新。只存在委派权限。请看我链接到的文章。您正在使用客户端凭据,这意味着您没有使用委派的权限。我链接到的文章解释了这些作用域是如何工作的。看起来您没有使用委派的权限。您可以尝试我提供的示例中提供的分步说明吗?因为我正在尝试使用REST API,PowerShell操作是不透明的-操作
$authContext.AcquireToken('https://graph.microsoft.com“,$ClientID,$redirectUri,[Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::始终)
不会告诉我是哪个作者。用于获取代码和令牌的API。你知道是哪一个吗?我相信在这一点上,我尝试了v1和v2 auth的所有组合。端点:/PowerShell只是被调用的应用程序(可以是UX等)。如果您查看代码,它将调用RESTAPI$authContext.AcquireToken提示用户提供凭据,以便使用ADAL for.Net获取令牌。您可以在这里找到不同平台的ADAL。