如何对 Azure 时间序列洞察查询 API 进行身份验证?
Posted
技术标签:
【中文标题】如何对 Azure 时间序列洞察查询 API 进行身份验证?【英文标题】:how to authenticate to Azure time series insights query API? 【发布时间】:2019-04-11 06:57:03 【问题描述】:在尝试查询 /environments 端点时,我不断收到 AuthenticationFailed
错误和 InvalidAuthenticationTokenAudience
内部错误。
我已经在 Azure Active Directory 中创建了一个应用程序,因为它可以在时间序列洞察管理门户中访问,并且我已经可以从身份验证 URL 获取 Oauth 2.0 访问令牌。
我尝试为令牌 url 提供“https://api.timeseries.azure.com/”资源/受众/范围,但 API 不断返回相同的错误消息:
“错误”: "code": "AuthenticationFailed", "message": "服务器未能验证请求。令牌是从错误的受众或资源获取的。", “内部错误”: "code": "InvalidAuthenticationTokenAudience", “消息”:“访问令牌已从错误的受众或资源'00000002-0000-0000-c000-000000000000'获得。它应该 与允许的之一完全匹配(包括正斜杠) 观众'https://api.timeseries.azure.com/'。”
我将 Postman 与 Oauth 2.0 身份验证类型、客户端凭据授予类型和作为令牌请求的基本 Auth Header 选项一起发送。
有人试过成功吗?
更新 01:
其中一个令牌的解码(使用 cmets 中建议的 JWT)payload
部分显示aud
字段为00000002-0000-0000-c000-000000000000
。这绝对是错误的。
【问题讨论】:
您能否解码jwt.io 中的访问令牌并在您的问题中提供结果? @JoyWang aud 字段的值有误(请参阅问题更新 01),但是您还想从解码的令牌中知道什么? 【参考方案1】:根据异常,表示获取访问令牌时资源不匹配https://api.timeseries.azure.com/
。
所以请确保资源是https://api.timeseries.azure.com/
,更多信息请参考截图。
获取访问令牌
我测试了Get environments API,它对我来说可以正常工作。
GET https://api.timeseries.azure.com/environments?api-version=2016-12-12
【讨论】:
很好用。我使用邮递员的基础设施来处理令牌请求和随后对 API 的调用。我将资源值提供到 Oauth 2 的“范围”字段中,获取邮递员的新访问令牌形式。我要使用那些,我应该在哪里包含我试图获取令牌的资源? URL 中的租户 ID 是什么? login.microsoftonline.com/<tenant_id>/oauth2/token,是client_id还是client_secret? @JYOTIPRAKASHMALLICK 请参阅this thread 以获取有关如何查找 azure 租户 ID 的更多信息。以上是关于如何对 Azure 时间序列洞察查询 API 进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 LINQ 针对 Azure Cosmos Document DB SQL API 有效地进行动态查询?
寻觅Azure上的Athena和BigQuery:落寞的ADLA