【发布时间】:2019-06-05 11:10:23
【问题描述】:
我想生成一个新的 SAS 令牌,用于使用带有 Java 的 Paho MQTT 访问 Azure IoT 中心。我想从后端 Java 服务检索 MQTT 消息。
当然我想限制每个服务实例对某些设备的访问。
这是我用来生成令牌的命令。
az iot hub generate-sas-token -d device1 -n iothubname --policy device
这是我收到的错误消息
{u'ExceptionMessage': u'Tracking ID<HIDDEN`enter code here`>:TimeStamp:01/01/2019 14:30:33', u'Message': u'ErrorCode:IotHubUnauthorizedAccess;Unauthorized'}
在我尝试之前,我尝试使用策略“服务”(因为该令牌应该由后端服务使用),但也不起作用:
az iot hub generate-sas-token -d device1 -n iothubname --policy service
{u'ExceptionMessage': u'Tracking ID:<>TimeStamp:01/01/2019 14:37:39', u'Message': u'ErrorCode:IotHubUnauthorizedAccess;Unauthorized'}
唯一有效的是az iot hub generate-sas-token -n iothubname,但关于文档,这会创建一个带有 iothubowner 政策的令牌,我不想提供我的后端服务。
即使阅读了 3 次文档,我也无法真正理解 Azure IoT Hub 上的权限概念:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-security#iot-hub-permissions
什么时候使用service 策略,什么时候使用device 策略?
谢谢!
【问题讨论】:
-
能否告诉我您是否使用 az login 首次登录 Azure?详情请查看此链接docs.microsoft.com/en-us/cli/azure/…
-
是的,我已经使用了,否则我认为命令
az iot hub generate-sas-token -n iothubname将无法正常工作。
标签: azure mqtt azure-iot-hub