# 自定义鉴权概述
#### 概述
自定义鉴权是指用户可以通过函数服务自定义实现鉴权逻辑，以对接入平台的设备进行身份认证。
在设备接入物联网平台前，用户可以通过应用服务调用控制台配置自定义鉴权信息，然后通过调用函数服务（[FunctionGraph](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0110.html)）配置自定义鉴权函数。在设备接入物联网平台时，物联网平台会获取设备ID和自定义鉴权函数名称等参数，并向FunctionGraph发起鉴权请求，由用户实现鉴权逻辑以完成设备的接入鉴权。
**图1** 自定义鉴权业务架构图
![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002041307006.png "点击放大")
#### 应用场景
- 迁移场景：当用户的设备从第三方云平台迁移到IoTDA平台时，存量设备可以依据现有的设备鉴权方式，在平台自定义配置设备的鉴权逻辑，以实现设备鉴权方式免改动的能力。
- 原生场景：用户有自定义实现鉴权逻辑的需求，而无需依赖于平台默认的鉴权方式。
 
#### 约束与限制
- 使用自定义鉴权功能，要求设备必须使用TLS同时支持[SNI(Server Name Indication)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1)，SNI中需要携带平台分配的域名。
- 每个用户默认最多支持10个自定义鉴权的配置。
- 自定义鉴权的函数最大处理时间为5秒，5秒内函数没返回结果，则认为鉴权失败。
- 每个用户总鉴权请求的TPS限制参考[产品规格说明](https://support.huaweicloud.com/productdesc-iothub/iot_04_0014.html)，自定义鉴权为总鉴权TPS的50%（不包含设备自注册）。
- 若用户开启了缓存FunctionGraph的鉴权结果，则在相同参数下，函数服务的修改生效时间需在缓存超期后才能生效。
- 在所有的设备接入鉴权方式中，当满足自定义鉴权条件时（匹配到设备携带的自定义鉴权器名称或用户配置了默认自定义鉴权器），优先采用自定义鉴权方式进行设备接入。
![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
- 自定义认证功能是为方便用户快速接入平台，免于设备侧改造，平台将使用您提供的鉴权函数进行鉴权，请合理审视认证方式的安全程度，避免使用弱校验或者免校验，由于您自定义函数安全程度过低造成的安全问题，平台将不承担任何安全责任。
- 鉴权名称"huaweicloud"为平台保留字用户不能创建，用于当开启自定义鉴权同时又想使用平台系统鉴权时使用，clientId与password参数格式参考[密钥鉴权](https://support.huaweicloud.com/devg-iothub/iot_02_0203.html)，username格式为：deviceId\|authorizer-name=huaweicloud。
 
