【问题标题】:Using POSTMAN to get Authorization Code - OAuth2.0使用 POSTMAN 获取授权码 - OAuth2.0
【发布时间】:2020-09-20 20:38:14
【问题描述】:

我正在使用 POSTMAN 测试 MSGraph 的 OAuth2.0 AuthCode 流程。以下是相同的细节:

验证码网址https://login.microsoftonline.com/{tenant_id}/oauth2/authorize

AccessToken URLhttps://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token

当我做了一些研究以了解如何使用 POSTMAN 测试 OAuth2.0 时。我能够找到一些线程来帮助我生成访问令牌并点击用户配置文件 api 以获取用户详细信息,如下面的屏幕截图所示:

但是,我有一个奇怪的要求,我想在单独的请求中生成 AuthCode,然后在另一个请求中使用它来获取访问令牌,然后使用访问令牌在单独的请求中获取用户详细信息请求。

有人可以帮我解决上述要求吗?

【问题讨论】:

  • 单独请求是什么意思?
  • 通常我们使用auth代码流获取token来访问graph api需要以下三个步骤: 1. 请求授权码 2. 请求访问令牌 3. 使用访问令牌。每个步骤都是一个单独的请求。 docs.microsoft.com/en-us/azure/active-directory/develop/…
  • @CarlZhao - 单独的 POSTMAN 请求。是的,我同意,但是当你用谷歌搜索“如何使用邮递员测试 OAuth2.0”时 - 你会发现,它应该是用户个人资料 URL 的单个请求,并且在授权选项卡中,我们需要选择类型为 OAuth2.0 .我已经更新了问题并附上了相同的屏幕截图。
  • 获取代码是一个交互过程,需要你以用户身份登录,需要你在浏览器中执行请求:https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize? client_id=6731de76-14a6-49ae-97bc-6eba6914391e &response_type=code &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F &response_mode=query &scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fmail.read &state=12345

标签: azure oauth-2.0 azure-active-directory postman microsoft-graph-api


【解决方案1】:

您可以先在浏览器中请求授权码:

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id={your-client-id}
&response_type=code
&redirect_uri=https://localhost:4500/web/completeoauth/ms
&response_mode=query
&scope=https://graph.microsoft.com/mail.read
&state=12345

然后在postman中使用授权码请求token:


更新:

如果您不想使用浏览器,只需不要选中 Authorize using browser 复选框,然后将 Callback URL 设置为您的 重定向 URI 。当您请求令牌时,它会提示您登录。

登录后会直接将access token返回给你,但是你不会看到code,这是因为系统直接将你的code换成token返回给你。

【讨论】:

  • 感谢 Carl 对此的回复。我已经尝试过并且成功了,但是有什么方法可以通过邮递员请求获取 AuthCode 而无需浏览器干预?
  • @FAIZANAHMEDKHAN 如果您有任何问题,我会尽快回复您。
  • @FAIZANAHMEDKHAN,没有非交互式方式可以通过 Microsoft 个人帐户获取 AuthCode[1][2] :/
【解决方案2】:

在 Postman 中,在第一个请求的 test 选项卡中,您需要将 AuthCode 存储在一个环境变量中:pm.environment.set("authCode", authCode)

然后您可以通过pm.environment.get("authCode") 或在标头中或作为url 参数在下一个请求的预请求脚本中使用它:{{authCode}}

【讨论】:

  • 嗨,Christian,感谢您的回复,我正在尝试从 POSTMAN 发出单独的授权请求,如下所示: GET :: login.microsoftonline.com{tenant_id}/oauth2/authorize 我收到一个 html 作为响应,具有以下标题:“登录您的帐户”所以我想知道,我需要在哪里输入我的凭据才能获得授权码。
猜你喜欢
  • 2019-09-20
  • 1970-01-01
  • 2019-10-13
  • 2018-07-30
  • 2021-02-26
  • 2023-01-29
  • 1970-01-01
  • 2020-06-09
  • 2021-08-06
相关资源
最近更新 更多