从 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 请求访问令牌
从 Powershell 获取 Azure Active Directory 访问令牌