使用Postman向Azure IoT Hub发送POST请求持续返回Unauthorized
针对你遇到的Postman向IoT Hub发送请求返回Unauthorized的问题,可按以下几点逐一排查:
修正SAS Token的Resource URI
设备向IoT Hub发送消息时,SAS Token的resourceUri应设置为IoT Hub的主机名(如myhub.azure-devices.net),而非带设备路径的myhub.azure-devices.net/devices/TestDevice1。Event Hub的Resource URI规则与IoT Hub不同,之前适配Event Hub的代码需调整该参数。匹配密钥与keyName的对应关系
- 使用设备密钥时:
keyName必须是设备ID(即TestDevice1),密钥取设备详情中的“主密钥”或“次密钥”。 - 使用共享访问策略密钥时:比如用
iothubowner策略,keyName是策略名称(iothubowner),密钥取该策略的主/次密钥,同时要确保策略包含**发送(Send)**权限。
- 使用设备密钥时:
确认SAS Token的权限包含发送权限
生成Token时,权限参数需指定s(对应IoT Hub的发送权限)。若之前Event Hub的代码用的是send,需替换为s。检查Postman请求头格式
将生成的SAS Token放入Authorization请求头,格式必须为:SharedAccessSignature sr=myhub.azure-devices.net&sig=xxx&se=xxx&skn=xxx注意不要遗漏前缀
SharedAccessSignature(末尾带有空格)。验证SAS Token的正确性
用Azure IoT Explorer生成对应设备的SAS Token,与自己代码生成的Token对比,重点检查:- 过期时间(
se参数)是否未过期 - 签名部分(
sig)是否一致 - 资源(
sr)是否为IoT Hub主机名
- 过期时间(
内容的提问来源于stack exchange,提问作者Pile
相关产品推荐
相关产品推荐

