更新时间:2024-10-23 GMT+08:00

创建自定义鉴权

功能介绍

应用服务器可调用此接口在物联网平台创建一个自定义鉴权。自定义鉴权是指用户可以通过函数服务自定义实现鉴权逻辑,以对接入平台的设备进行身份认证。

  • 单个实例最大可配置10个自定义鉴权

  • 仅标准版实例、企业版实例支持该接口调用,基础版不支持。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v5/iot/{project_id}/device-authorizers

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数说明:项目ID。获取方法请参见 获取项目ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证

Instance-Id

String

参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考 查看实例详情

表3 请求Body参数

参数

是否必选

参数类型

描述

authorizer_name

String

参数说明:自定义鉴权器名称,同一租户下的自定义鉴权器名称不能重复。

取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。

func_urn

String

参数说明:函数的URN(Uniform Resource Name),唯一标识函数,即自定义鉴权器对应的处理函数地址。

signing_enable

Boolean

参数说明:是否启动签名校验,启动签名校验后不满足签名要求的鉴权信息将被拒绝,以减少无效的函数调用。推荐用户进行安全的签名校验,默认开启, 开启时signing_token与signing_public_key必填。

signing_token

String

参数说明:签名校验的Key值,开启签名校验时使用。

取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。

signing_public_key

String

参数说明:签名校验的公钥,开启签名校验时使用。用于认证设备携带的签名信息是否正确。

default_authorizer

Boolean

参数说明:当前自定义鉴权是否为默认的鉴权方式,默认为false,当设置为true时,用户所有支持SNI的设备,如果在鉴权时不指定使用特定的设备鉴权,将统一使用当前鉴权器策略进行鉴权。

status

String

参数说明:是否激活该鉴权方式

  • ACTIVE:该鉴权为激活状态。

  • INACTIVE:该鉴权为停用状态。

cache_enable

Boolean

参数说明:是否开启缓存,默认为false,设备为true时,当设备入参(username,clientId,password,以及证书信息,函数urn)不变时,当缓存结果存在时,将直接使用缓存结果,建议在调试时设置为false,生产时设置为true,避免频繁调用函数。

响应参数

状态码: 201

表4 响应Body参数

参数

参数类型

描述

authorizer_id

String

参数说明:自定义鉴权ID。

authorizer_name

String

参数说明:自定义鉴权器名称,同一租户下的自定义鉴权器名称不能重复。

取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。

func_name

String

参数说明:函数名称。

func_urn

String

参数说明:函数的URN(Uniform Resource Name),唯一标识函数,即自定义鉴权器对应的处理函数地址。

signing_enable

Boolean

参数说明:是否启动签名校验,启动签名校验后不满足签名要求的鉴权信息将被拒绝,以减少无效的函数调用。推荐用户进行安全的签名校验,默认开启。

signing_token

String

参数说明:签名校验的Key值,开启签名校验时使用。

取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。

signing_public_key

String

参数说明:签名校验的公钥,开启签名校验时使用。用于认证设备携带的签名信息是否正确。

default_authorizer

Boolean

参数说明:是否为默认的鉴权方式,默认为false。

status

String

参数说明:是否激活该鉴权方式

  • ACTIVE:该鉴权为激活状态。

  • INACTIVE:该鉴权为停用状态。

cache_enable

Boolean

参数说明:是否开启缓存,默认为false,设备为true时,当设备入参(username,clientId,password,以及证书信息,函数urn)不变时,当缓存结果存在时,将直接使用缓存结果,建议在调试时设置为false,生产时设置为true,避免频繁调用函数。

create_time

String

在物联网平台进行自定义鉴权相关操作的时间。格式:yyyyMMdd'T'HHmmss'Z',如:20151212T121212Z。

update_time

String

在物联网平台更新自定义鉴权相关操作的时间。格式:yyyyMMdd'T'HHmmss'Z',如:20151212T121212Z。

请求示例

创建自定义鉴权

POST https://{endpoint}/v5/iot/{project_id}/device-authorizers

{
  "authorizer_name" : "myTest",
  "func_urn" : "urn:fss:cn-north-5:d92d9c5eb8e347b5bb31ecfe5bc0c4e1:function:default:mqtt_auth:latest",
  "signing_enable" : true,
  "signing_token" : "string",
  "signing_public_key" : "string",
  "default_authorizer" : false,
  "status" : "ACTIVE",
  "cache_enable" : true
}

响应示例

状态码: 201

Created

{
  "authorizer_id" : "5c90fa7d3c4e4405e8525079",
  "authorizer_name" : "myTest",
  "func_name" : "mqtt_auth",
  "func_urn" : "urn:fss:cn-north-5:d92d9c5eb8e347b5bb31ecfe5bc0c4e1:function:default:mqtt_auth:latest",
  "signing_enable" : true,
  "signing_token" : "string",
  "signing_public_key" : "string",
  "default_authorizer" : false,
  "status" : "ACTIVE",
  "cache_enable" : false,
  "create_time" : "20231031T070547Z",
  "update_time" : "20231031T070547Z"
}

状态码

状态码

描述

201

Created

400

Bad Request

401

Unauthorized

403

Forbidden

500

Internal Server Error

错误码

请参见错误码