Skip to content

授权

当访问实体(控制台用户、集成密钥或 IoT 设备)访问 IDaaS 和 IAM API 时,将强制执行身份验证/授权过程。这些实体首先需要通过授权服务器进行身份验证。成功验证后,将在JWT访问令牌中看到相应的授权声明信息。然后,实体使用该令牌访问API。

JWT 令牌中的授权声明

json
{
  "sub": "iotuser",
  "aud": "six-iam-xzy",
  "nbf": 1728618455,
  "role": [
    {
      "ROLE_iam-iot-product-key": [
        "iam_config_read",
        "iam_key_create",
        "iam_keys_read",
        "iam_key_update"
      ]
    },
    {
      "ROLE_iam-iot-app-edit": [
        "iam_app_update",
        "iam_app_create",
        "iam_app__client__link_remove"
      ]
    },
    {
      "ROLE_iam-iot-product-edit": [
        "iam_iot__product_update",
        "iam_iot__product__props_create",
        "iam_iot__product__topic_delete",
        "iam_iot__product__topic_create",
        "iam_iot__product_create",
        "iam_iot__product_delete"
      ]
    },
    {
      "ROLE_iam-iot-device": [
        "iam_iot__analysis_deviceMsg",
        "iam_iot__device__mqttmsgs_read",
        "iam_iot__device__statuses_read",
        "iam_iot__device__info_acls",
        "iam_iot__device__info_bindings",
        "iam_iot__device_bind",
        "iam_iot__analysis_activeDevice"
      ]
    },
    {
      "ROLE_iam-iot-app-read": [
        "iam_app__clients_read",
        "iam_app_read",
        "iam_app__users_read",
        "iam_apps_read"
      ]
    },
    {
      "ROLE_iam-iot-product-read": [
        "iam_iot__product_read",
        "iam_iot__products_read"
      ]
    },
    {
      "ROLE_iam-device": [
        "iam_device_read",
        "iam_devices_read",
        "iam_device_registration",
        "iam_device__guid_read",
        "iam_device_provision"
      ]
    },
    {
      "ROLE_iam-iot-config-read": [
        "iam_iot__config_read"
      ]
    },
    {
      "ROLE_iam-iot-client-read": [
        "iam_clients_read"
      ]
    },
    {
      "ROLE_iam-iot-client-edit": [
        "iam_client__app_create",
        "iam_client_create",
        "iam_client_update"
      ]
    }
  ],
  "org": {
    "level": 0,
    "orgId": "0a2a0093-8bf6-1dda-818b-f64e02080000"
  },
  "openId": "0a2a0091-8bf6-1cf7-818b-f65f90820000",
  "scope": [
    "openid",
    "profile"
  ],
  "iss": "https://iam.shuhenglianchang.com",
  "exp": 1728618755,
  "iat": 1728618455,
  "jti": "38a615ab-d748-4de4-838e-38f031a657cd"
}

授权执行

对于所有需要经过身份验证后才能访问的 API,将强制执行授权检查过程,除了通过 JWK 验证访问令牌的真实性之外,资源服务器将在资源(API)上添加额外的“权限”检查或属性检查或两者,以查看访问实体是否已获得相关权限或已分配特定属性。

API/资源还有一个资源层次结构概念。对于“SiX统一认证/授权”相关的 API/资源,通常它们将与一个“组织”相关联,通常只有同一组织或上级组织中的访问实体才能访问这些资源(一个用例是上级组织中的“管理员用户”可以管理其子组织中的资源)。

提示

查看以下部分资源层次结构概念

资源层次结构概念

“SiX统一认证/授权”平台资源(例如身份应用程序(目录))放在特定组织/工作区下,只有在同一组织或上级组织中分配的实体(控制台用户、集成密钥或 IoT 设备)才能访问此类资源。

当您基于“SiX统一认证/授权”多租户开发自己的 API 时,您可以使用相同的概念。有关更多信息,请参阅 基于 IAM 开发自己的 API

权限声明强制授权检查

资源服务器将根据权限声明强制执行受保护API的授权检查,授权语法如下:

md
调用者需要拥有权限
hasPermission(#clientPrimaryId, 'client-app', 'create') 或 hasPermission(#clientPrimaryId, 'TargetClient', 'ALL')
才能调用 API。

提示

您可以在API文档中看到访问API需要的授权信息。

属性声明强制授权检查

资源服务器将根据属性声明强制执行受保护API的授权检查,授权语法如下:

md
调用者需要拥有权限
@attributeMethodSecurity.matchAttributeValue(authentication, #productId, 'six_iot_product') 和 @attributeMethodSecuritymatchAttributeValue(authentication, 'device_reg', 'purpose')
才能调用 API。

提示

您可以在API文档中看到访问API需要的授权信息。

平台 API 访问

“SiX统一认证/授权”平台将API分类到以下类别中,您可以访问链接以获取更多信息并尝试调用 API。

IDaaS 和 IAM API

IDaaS 和 IAM 管理 API

设备 API

领先的解决方案提供商