
# 自定义模板鉴权概述
#### 概述
自定义模板鉴权是指用户可以使用平台提供的[内部函数](https://support.huaweicloud.com/usermanual-iothub/iot_01_0216.html)实现自定义的鉴权方式，而不需使用[平台默认鉴权方式](https://support.huaweicloud.com/api-iothub/iot_06_v5_3009.html)，对接入平台的设备进行身份认证，用户可以通过平台预置的函数灵活编排鉴权方式。
#### 应用场景
- 迁移场景：当设备从第三方物联网平台迁移到华为云IoTDA时，通过配置平台提供的自定义鉴权模板可以兼容原来的鉴权方式，设备侧无需改动实现无缝迁移。
- 原生场景：自定义模板鉴权可以让用户扩展自己的设备鉴权方式，而不需要与平台默认鉴权绑定，极大地提高了设备可扩展性。
 
#### 约束与限制
1. 使用自定义鉴权功能，要求设备必须使用TLS同时支持[SNI(Server Name Indication)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1)，SNI中需要携带平台分配的域名。
2. 默认每个用户最多支持5个自定义鉴权模板，只能启用一个激活状态的模板。
3. 鉴权模板函数嵌套最大深度为5层。
4. 模板内容体最大长度不能超过4000字符，且不能包含中文字符。
5. 设备为密钥认证类型时，模板密码函数必须包含设备原始密钥参数(iotda::device::secret)。
6. 使用模板鉴权时，鉴权参数username不能与自定义函数鉴权username格式重叠，否则会使用自定义函数鉴权，比如：
   ```
   {deviceId}|authorizer-name={authorizer-name}|xxx
   ```
   
7. 自定义模板鉴权优先级高于平台默认鉴权，即激活自定义鉴权模板后设备就会使用模板鉴权，不会再使用平台默认鉴权方式。
![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
自定义认证功能是为方便用户快速接入平台，免于设备侧改造，平台将使用您提供的鉴权模板进行鉴权，请合理审视认证方式的安全程度，避免使用弱校验或者免校验，由于您自定义模板安全程度过低造成的安全问题，平台将不承担任何安全责任。
