Azure Maps使用SAS令牌调用路线API返回401错误,订阅密钥可正常使用
解决Azure Maps SAS令牌调用路线API返回401的问题
核心排查点及修复步骤
1. 确认SAS令牌包含Route权限
生成SAS令牌时,必须明确勾选Route类的权限(至少route.read)。默认生成的SAS可能仅包含Render、Search等权限,不覆盖路线API:
- 登录Azure门户,进入你的Azure Maps账户
- 转到「共享访问签名」页面
- 在「权限」部分,确保勾选「Route > Read」
- 确认「资源类型」包含「Routing」服务(若有选项)
- 重新生成SAS令牌后再测试
2. 分配正确的角色给托管标识
你当前分配的角色(Azure Maps Search and Render Data Reader、Data Reader、Data Contributor)不覆盖路线API权限,需要添加Azure Maps Route Data Reader角色:
- 进入Azure Maps账户的「访问控制(IAM)」页面
- 点击「添加角色分配」
- 搜索并选择「Azure Maps Route Data Reader」角色
- 将该角色分配给你的用户托管标识
- 等待权限生效(通常几分钟)后重试
3. 修正请求参数格式
使用SAS令牌时,请求参数名应为sas_token,而非subscription-key。正确的请求格式如下:
https://atlas.microsoft.com/route/directions/json?api-version=1.0&sas_token=YourGeneratedSAS&query=53.784536,-3.020481:53.793375,-3.055761
4. 验证SAS令牌有效性
解码SAS令牌的签名部分,确认以下信息:
- 权限字段(
sp)包含r(对应Route Read权限) - 资源URI(
sr)包含routing服务标识 - 过期时间(
se)未超出当前时间
若以上步骤完成后仍有问题,可提供生成SAS令牌的具体配置截图或代码片段,以便进一步排查。
内容的提问来源于stack exchange,提问作者rumi
相关产品推荐
相关产品推荐

