在哪里可以找到Microsoft App的APP ID URI?

时间:2019-04-04 17:49:45

标签: azure azure-active-directory microsoft-graph

我正在尝试使用已注册的应用程序登录,并具有以下权限: Azure门户>应用程序注册>应用程序注册(预览)>我的应用程序名称-API权限

根据this documentation,在请求令牌时,我必须在scope参数中传递我的资源标识符(APP ID URI)。我可以肯定,这个范围参数是导致我出现问题的参数。

我尝试了示波器的不同参数。

  1. https://graph.microsoft.com/.default:这适用于基本功能,例如阅读日历,但我认为默认权限满足我的需求很少。既然可以,我相信我的其他参数是正确的,范围就是问题。

  2. [APP-ID]/.default:这给了我一个成功的响应,但是,每当我尝试发出任何请求(包括基本读取日历请求)时,我都会得到InvalidAuthenticationToken。我可以向您保证,我将传递从令牌请求中检索到的正确令牌。

  3. 基于在线建议的多个不同的URL组合。 他们都返回

      

    “在租户{id}中找不到资源主体{resource-url}。

我坚信问题是我没有为我的申请传递正确的APP ID URI。谁能告诉我在哪里可以找到此资源?我在网上搜索的所有内容都有2年以上的历史了,对于新的Azure门户来说似乎并不相同。

1 个答案:

答案 0 :(得分:1)

对于客户端凭据(即在没有用户的情况下获取令牌),您需要传递https://graph.microsoft.com/.default作为scope

https://graph.microsoft.com/.default提供的权限是您在门户网站中注册应用程序时指定的“应用程序权限”:

enter image description here

一旦添加了应用程序所需的所有“应用程序权限”,就需要为租户中的这些范围“授予许可”(这是“ API权限”标签底部的按钮。

一旦有了这些,就需要向POST端点发出/token(换行符只是为了可读性,应该是一个字符串):

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

这将为您返回如下内容:

{
    "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..."
}

调用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"