授权
当访问实体(控制台用户、集成密钥或 IoT 设备)访问 IDaaS 和 IAM API 时,将强制执行身份验证/授权过程。这些实体首先需要通过授权服务器进行身份验证。成功验证后,将在JWT访问令牌中看到相应的授权声明信息。然后,实体使用该令牌访问API。
JWT 令牌中的授权声明
{
"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的授权检查,授权语法如下:
调用者需要拥有权限
hasPermission(#clientPrimaryId, 'client-app', 'create') 或 hasPermission(#clientPrimaryId, 'TargetClient', 'ALL')
才能调用 API。
提示
您可以在API文档中看到访问API需要的授权信息。
属性声明强制授权检查
资源服务器将根据属性声明强制执行受保护API的授权检查,授权语法如下:
调用者需要拥有权限
@attributeMethodSecurity.matchAttributeValue(authentication, #productId, 'six_iot_product') 和 @attributeMethodSecuritymatchAttributeValue(authentication, 'device_reg', 'purpose')
才能调用 API。
提示
您可以在API文档中看到访问API需要的授权信息。
平台 API 访问
“SiX统一认证/授权”平台将API分类到以下类别中,您可以访问链接以获取更多信息并尝试调用 API。