Я хочу сгенерировать новый токен SAS для доступа к концентратору IoT Azure с помощью Paho MQTT с Java. Я хочу получить сообщения MQTT из серверной службы Java.
Конечно, я хочу ограничить доступ для каждого экземпляра службы к определенным устройствам.
Это команда, которую я использую для генерации токена.
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'}
До того, как я попробовал это, я пытался использовать политику "service" (потому что этот токен должен использоваться серверной службой), которая тоже не работала:
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, который я не хочу предоставлять своему бэкэнд-сервису.
Я не могу понять концепцию разрешений в IoT-концентраторе Azure даже после трехкратного чтения документов: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-security#iot-hub-permissions
Когда я буду использовать политику service
и когда я буду использовать политику device
?
Спасибо!