Платформа Интернета вещей Watson: невозможно назначить стандартную роль шлюза устройству

Я пытаюсь назначить стандартную роль шлюза шлюзовому устройству в соответствии с доступной документацией https://docs.internetofthings.ibmcloud.com/apis/swagger/v0002-beta/security-gateway-beta.html#!/Limited_Gateway/put_authorization_devices_deviceId_roles

Но я продолжаю получать ошибку 403 Forbidden. Я использую учетные данные приложения (ключ API и токен), у которого есть роль «Операционное приложение» и, следовательно, привилегии для назначения ролей.

Вот несколько запущенных скриптов, в которых я заменил организацию, тип, идентификатор и токен фиктивными значениями.

curl -X PUT \
 https://dummyorg.internetofthings.ibmcloud.com:443/api/v0002/authorization/devices/g%3Adummyorg%3Adummytype%3Adummyid/roles \
      -H 'authorization: Basic dummyauth' \
      -H 'content-type: application/json' \
      -d '{
      "roles": [
        {
          "roleId": "PD_STANDARD_GW_DEVICE",
          "roleStatus": 1
        }
      ]
    }'

Ответ HTTP 403 запрещен

Когда я пытаюсь получить роль устройства, все работает нормально

curl -X GET \
  https://dummyorg.internetofthings.ibmcloud.com:443/api/v0002/authorization/devices/g%3Adummyorg%3Adummytype%3Adummyid/roles \
  -H 'authorization: Basic dummyauth' \

Ответ

{
  "results": [
    {
      "roleId": "PD_PRIVILEGED_GW_DEVICE",
      "roleStatus": 1
    }
  ],
  "rolesToGroups": {}
}

person jeet    schedule 20.04.2017    source источник


Ответы (1)


Обратите внимание на URL-адрес — вы должны использовать «g» и закодировать его. Вам нужно включить заголовок базовой авторизации, в котором есть ваши ключи API (у меня стандартное приложение):

PUT /api/v0002/authorization/devices/g%3AOrgID%3Agatewaytype%3AmyGateway/roles HTTP/1.1
Host: OrgID.internetofthings.ibmcloud.com
Authorization: Basic removed
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: removed

{  
    "roles": [
        {
            "roleId": "PD_STANDARD_GW_DEVICE",
            "roleStatus": 1         
        }
    ],  
    "rolesToGroups": {}
}
person amadain    schedule 20.04.2017
comment
@amadmin: я добавил сценарии, которые использую. Я использую g: вместо d:, а также ключи API для приложения Operation, которое имеет гораздо больше привилегий. - person jeet; 20.04.2017
comment
Я на Windows, curl заставляет меня страдать от чего-то большего, чем простой GET. Я попытался, но выдает «CUDAS0002E: ошибка ввода-вывода при обработке ответа». Я также попробовал RestClient в Firefox, и это сработало отлично. - person amadain; 20.04.2017