Min*_*jer 6 azure azure-active-directory microsoft-graph-api
我正在尝试以我注册的应用程序登录,并授予以下权限:Azure 门户 > 应用程序注册 > 应用程序注册(预览)> 我的应用程序名称 - API 权限
根据此文档,APP ID URI在请求令牌时,我必须在范围参数中传递我的资源标识符 ( )。我确信这个范围参数是导致我出现问题的参数。
我尝试了范围的不同参数。
https://graph.microsoft.com/.default:这适用于基本功能,例如阅读日历,但我认为默认权限很少满足我的需求。既然这样有效,我相信我的其他参数是正确的,范围就是问题所在。
[APP-ID]/.default:这给了我一个成功的响应,但是,每当我尝试提出任何请求时,包括基本的读取日历请求,我都会收到InvalidAuthenticationToken. 我可以向您保证,我正在传递从令牌请求中检索到的正确令牌。
基于在线建议的多种不同 URL 组合。他们都回来了
“在租户 {id} 中找不到资源主体 {resource-url}。
我坚信问题在于我没有通过APP ID URI我的应用程序的正确性。谁能告诉我在哪里可以找到这个资源?我在网上搜索的所有内容都已使用 2 年以上,对于新的 Azure 门户似乎并不相同。
对于客户端凭证(即在没有用户的情况下获取令牌),您需要将https://graph.microsoft.com/.default您的scope.
提供的权限https://graph.microsoft.com/.default是您在门户中注册应用程序时指定的“应用程序权限”:
添加应用程序所需的所有“应用程序权限”后,您需要为租户中的这些范围“授予同意”(这是 API 权限选项卡底部的按钮)。
一旦你完成了这些,你需要POST向/token端点发出 a (换行符只是为了可读性,这应该是单个字符串):
POST https://login.microsoftonline.com/{{tenantDomain}}/oauth2/token
Content-Type: application/x-www-form-urlencoded
client_id={your-app-id}
&scope=https://graph.microsoft.com/.default
&client_secret={your-client-secret}
&grant_type=client_credentials
Run Code Online (Sandbox Code Playgroud)
这将返回你这样的东西:
{
"token_type": "Bearer",
"expires_in": "3600",
"ext_expires_in": "3600",
"expires_on": "1554431330",
"not_before": "1554427430",
"resource": "00000003-0000-0000-c000-000000000000",
"access_token": "eyJ0eXAiOiJKV1QiLCJub25jZS..."
}
Run Code Online (Sandbox Code Playgroud)
当您调用 Graph 时,您需要将Authorization标题设置为token_type access_token。所以调用/users看起来像这样:
GET https://graph.microsoft.com/v1.0/users
Authorization:"Bearer eyJ0eXAiOiJKV1QiLCJub25jZS..."
Host:"graph.microsoft.com"
Accept:"application/json"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10548 次 |
| 最近记录: |