【问题标题】:Microsoft Graph - How to obtain token non-interactively?Microsoft Graph - 如何以非交互方式获取令牌?
【发布时间】:2019-01-14 22:03:11
【问题描述】:

我想通过 GET 请求获取 Microsoft Graph 上的令牌。 如果我使用以下调用,我会看到一个登录屏幕,要求输入用户名和密码。

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=f3992025-4d4d-XXXXX-bb2d-XXXXXXXXX
&client_secret=XXXXXXXXXXXXXXXXXXXXXXXXXX
&response_type=code
&redirect_uri=https://10.100.XXX.XXX:5858/authorize
&response_mode=query
&scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fmail.read
&state=12345

如果我这样做了,我会得到稍后获取令牌所需的代码,并且我可以毫无问题地使用它

我的问题是我不想进入那个登录屏幕。我希望请求返回代码无需用户交互。我认为 client_id 和 client_secret 会处理这个问题。

我正在遵循以下指示:https://developer.microsoft.com/en-us/graph/docs/concepts/auth_overview

谢谢。

【问题讨论】:

  • 我认为您正在寻找的是客户端凭据授予流程 :) 它不涉及浏览器,只涉及一个 HTTP 请求。它确实依赖于应用程序权限,即授予您应用程序本身的权限,而不代表用户。
  • 谢谢!我在执行 /authorize 请求时添加了 &grant_type=client_credentials 但是我仍然得到一个交互式登录屏幕。
  • @acanessa 您是否尝试过使用 Postman 或任何客户端工具?

标签: azure oauth-2.0 token microsoft-graph-api


【解决方案1】:

据我所知,您可以使用 OAuth 2.0 客户端凭据授权通过应用程序的身份访问 Web 托管资源。它用于服务器到服务器的交互。有关详细信息,请单击 @987654321 @。

POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
client_id=f3992025-4d4d-XXXXX-bb2d-XXXXXXXXX
&scope=https://graph.microsoft.com/.default
&client_secret=XXXXXXXXXXXXXXXXXXXXXXXXXX
&grant_type=client_credentials

【讨论】:

  • 我的问题已解决。现在我看到我不需要 /authorize,我可以通过这个流程直接进入 /token。我的代码也有问题,它返回响应信息,而不是正文(带有令牌)。使用您提供的链接中提到的 CURL 为我提供了线索。谢谢!
猜你喜欢
  • 2016-07-12
  • 2017-10-08
  • 2023-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多