0

我正在尝试根据可用的文档将标准网关角色分配给网关设备 https://docs.internetofthings.ibmcloud.com/apis/swagger/v0002-beta/security-gateway-beta.html#!/Limited_Gateway/put_authorization_devices_deviceId_roles

但我不断收到 403 Forbidden 错误。我正在使用具有“操作应用程序”角色并因此具有分配角色的权限的应用程序凭据(api 密钥和令牌)。

这里有几个运行的脚本,我用虚拟值替换了 org、type、id 和 token

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": {}
}
4

1 回答 1

0

注意 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": {}
}
于 2017-04-20T08:16:04.590 回答