从 Postman 生成 Azure 访问令牌

Posted

技术标签:

【中文标题】从 Postman 生成 Azure 访问令牌【英文标题】:Azure access token generation from Postman 【发布时间】:2019-11-19 02:22:30 【问题描述】:

我想从 Postman 生成 Azure 令牌以在我的项目中进行 API 授权。我能够使用以下 API 请求生成令牌,但在另一个 API 请求中使用生成的令牌时收到以下错误消息“Authorization denied for this request”。

端点#

https://login.microsoftonline.com/:tenant_id/oauth2/token 

参数#

tenant_id:As per id generation by azure.

正文#(表单数据)

grant_type:client_credentials
client_id:As per id generation by azure.
client_secret:As per id generation by azure.
resource:Required URL

响应#

    "token_type": "Bearer",
    "expires_in": "foo",
    "ext_expires_in": "foo",
    "expires_on": "foo",
    "not_before": "foo",
    "resource": "foo",
    "access_token":foo

由于不接受上述返回的令牌,我在请求正文中也传递了用户名和密码,但最终得到了相同的结果。即使它们是错误的,azure 也没有考虑我的凭据。

能否请您协助我在响应中还需要发送什么来获取有效的令牌 ID?

【问题讨论】:

查看更新的答案并完全按照我的说明进行操作。你肯定会得到令牌。如果您还有其他问题,请告诉我 我按照您的指示申请并成功获取令牌,但问题是生成的令牌在传递到另一个 API 以进行身份​​验证时不被接受为有效令牌。 你在哪里传递这个?您尝试访问哪个资源?显示网址 POST>>>login.microsoftonline.com/<<My 租户名称>>.microsoft.com/oauth2/token。发送这些inbody(授权类型、clientid、client_secret 和资源) 这是token端点,拿到token后你在哪里传呢?不是这个网址 【参考方案1】:

client_credentials 认证流程的有效格式如下:

应用 ID 和租户 ID 的 Azure 门户凭据:

来自门户的应用程序秘密:

令牌端点或 URL:

https://login.microsoftonline.com/YourTenantName.onmicrosoft.com/oauth2/token

请求参数:

grant_type:client_credentials
client_id:b603c7be_Your_App_ID_e6921e61f925
client_secret:Vxf1Sl_Your_App_Secret_2XDSeZ8wL/Yp8ns4sc=
resource:https://graph.microsoft.com 

邮递员示例:

响应令牌:

公开你自己的 API:

当您想要授权您自己的 API 时,您可以在此处添加它。这样您的令牌将包含此权限并且可以访问此 API。参考这个docs

为了更清楚,您可以参考official docs

【讨论】:

在使用生成的访问令牌时,我仍然收到相同的错误(“消息”:“此请求的授权已被拒绝。”)。 https://login.microsoftonline.com/YourTenantName.onmicrosoft.com/oauth2/token 像这样。如果可能,请用屏幕截图更新您的问题【参考方案2】:

在使用生成的令牌时,您应该尝试在请求中添加“X-ZUMO-AUTH”标头。

GET https://<appname>.azurewebsites.net/api/products/1
X-ZUMO-AUTH: <authenticationToken_value>

https://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-how-to

【讨论】:

以上是关于从 Postman 生成 Azure 访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

通过 Azure API 管理生成访问令牌并针对 IdentityServer4 进行验证

在 Postman 中为受 Azure AD B2C 保护的 Azure Function App 请求访问令牌

无法使用 Postman 和授权令牌访问后端

从 Powershell 获取 Azure Active Directory 访问令牌

如何使用 Postman 获取 Azure AD 刷新令牌?

使用 SAS 令牌从 Azure 阶段读取时出现雪花错误