获取Azure Rate Card时出现HTTP 400错误:InvalidAuthenticationInfo
排查Azure Rate Card API的InvalidAuthenticationInfo错误
看来你在调用Azure Rate Card API的时候碰上个棘手的认证问题了——HTTP 400 + InvalidAuthenticationInfo错误,核心提示就是授权头格式不对。我给你整理几个排查方向,你可以逐一验证:
先确认Authorization头的格式是否标准
Azure管理类API(包括Rate Card)默认使用Bearer令牌认证,正确的格式必须是:Authorization: Bearer <你的访问令牌>。这里要注意几个细节:别漏了Bearer这个关键字,令牌前后不要加多余的空格、引号或者其他符号,很多时候就是因为多了个空格或者引号导致格式不被识别。检查访问令牌的有效性和正确性
- 首先要确认你获取令牌时指定的资源参数是
https://management.azure.com/,如果资源设成了其他值(比如Azure AD Graph的资源),哪怕令牌本身有效,也无法通过Rate Card API的认证。 - 验证令牌是否过期:你可以用JWT解码工具(本地运行的脚本或者离线工具就行)解析令牌,查看
exp字段对应的过期时间,如果已经过期,赶紧重新获取新的令牌。
- 首先要确认你获取令牌时指定的资源参数是
核对API请求的Endpoint和版本
确保你调用的Rate Card API地址是正确的,比如标准的请求格式应该是:GET https://management.azure.com/subscriptions/{你的订阅ID}/providers/Microsoft.Commerce/RateCard?api-version=2016-08-31-preview&$filter=OfferDurableId eq 'MS-AZR-0003p' and Currency eq 'USD' and Locale eq 'en-US' and RegionInfo eq 'US'注意
api-version不能太老旧,否则可能和当前的认证机制不兼容。如果使用非令牌认证方式(比如证书)
要是你没用到Bearer令牌,而是用客户端证书认证,那得确认证书是否正确安装、请求中是否附带了有效的证书,并且证书的权限足够访问订阅的Rate Card数据。
附上你提供的错误信息:
<?xml version="1.0" encoding="utf-8"?> <Error> <Code>InvalidAuthenticationInfo</Code> <Message>Authentication information is not given in the correct format. Check the value of Authorization header. RequestId:757bb26d-801e-005b-45e9-d7361f000000 Time:2018-04-19T14:19:26.9289239Z</Message> </Error>
内容的提问来源于stack exchange,提问作者user1142317
相关产品推荐
相关产品推荐

