我想生成一个新的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中心上的权限的概念:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-security#iot-hub-permissions
我什么时候使用service
策略,什么时候使用device
策略?
谢谢!
答案 0 :(得分:0)
尝试
az iot hub generate-sas-token -n [IoTHub Name] --policy registryRead --key-type secondary
您可以在以下链接的示例中看到相同的细节