【问题标题】:Is it possible to get app only token for Azure AD where the resource or scope is https://graph.microsoft.com/?是否可以获得资源或范围为 https://graph.microsoft.com/ 的 Azure AD 的仅应用令牌?
【发布时间】:2017-09-07 10:15:38
【问题描述】:

是否可以获得资源或范围为 https://graph.microsoft.com/ 的 Azure AD 的仅应用令牌?

我阅读了文章Service to service calls using client credentials (shared secret or certificate),但是我无法获得访问令牌,错误是“未能在租户xxx 中找到资源https://graph.microsoft.com/”。

如果我把resource改成scope,我可以得到一个访问令牌,但是这个令牌不能用来获取web api。我收到 401 未经授权的错误。但我已授予所有权限,包括应用程序和图形 api 的委派权限。

POST /contoso.com/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=625bc9f6-3bf6-4b6d-94ba-e97cf07a22de&client_secret=qkDwDJlDfig2IpeuUZYKH1Wb8q1V0ju6sILxQQqhJ+s=&resource=https%3A%2F%2Fservice.contoso.com%2F

【问题讨论】:

  • 您的调用似乎是正确的,但客户端密码需要进行 URL 编码。 (就像资源 URI 一样)
  • 谢谢,我找到了原因。我使用一个库来处理这个问题,它对参数进行编码,但我再编码一次。我删除了我的,它可以工作。

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


【解决方案1】:

如果您在 Azure 门户中注册 Azure AD 应用程序并希望使用客户端凭据流获取 microsoft graph api 的令牌,则应使用 https%3A%2F%2Fgraph.microsoft.com%2F(url-encoded) 作为 resource ,并且不要忘记使@juunas 建议的客户端密码 URL 编码。

如果您正在为自己的受 Azure AD 保护的 Web api 获取令牌,您可以使用为 api 应用程序注册的 App ID URI 作为资源。代码示例here 供您参考。

【讨论】:

    猜你喜欢
    • 2019-06-19
    • 2018-02-06
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多