# 使用JWT身份验证

### 使用流程

1. 通过工具或业务系统生成Jwt Token
2. 在mqtt客户端登陆时在password参数填写jwt token。注意：需要让password参数生效必须同时填写user参数，可随意填写，只是不允许空值。相关协议规定请查询mqtt协议说明。
3. http或coap的publish接口均支持使用Jwt token功能。请参阅本手册相关章节。

### 演练

#### 1.通过jwt.io网站生成jwt token

![](https://33059891-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPz4APWKTuf0FRQG1lh%2F-MOExF9gUuHGywcshG65%2F-MOEzsSoSo5e4mCIcVFp%2F1607659899941.jpg?alt=media\&token=795ab222-152a-4f58-959e-4d7f5b107eeb)

复制左边的Encoded内容为实际jwt token

#### 2.配置Coolpy7内核启动相关参数

```
//-as=1即启动jwt验证功能
//-jsk=coolpy7即设置jwt解密密钥为coolpy7，此密钥必须与你生成jwt token的密钥一致
./go_build_Coolpy7_go_linux -as=1 -jsk=coolpy7
```

#### 3.通过客户端连接测试

以mqttx客户端工具为例

![](https://33059891-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPz4APWKTuf0FRQG1lh%2F-MOExF9gUuHGywcshG65%2F-MOF0rqz4iGGjQotSdML%2F1607660424685.jpg?alt=media\&token=6172635c-163e-41f0-9169-f17c88fbf08c)

点击连接按扭即可连接到Coolpy7并完成身份认证。

{% hint style="success" %}
一般业务场境使用jwt功能是由以下方法构建业务系统

1.通过业务系统生成与业务系统一致的jwt token，通过jwt token自动的超时机制对用户身份核实，并提供临时授权的功能。

2.用户通过已在业务系统中使用的jwt token同时用于连接到coolpy7的相关功能进行身份验证。

3.即可达到同一密钥，又能限制非法用户连接到cp7，还可使用到jwt的口令超时验证功能。
{% endhint %}

相关测试用例代码请参阅

http用例：<https://github.com/Coolpy7/coolpy7_benchmark/blob/master/test_coap_publish/cp7_coap_pub_jwt.go>

coap用例：<https://github.com/Coolpy7/coolpy7_benchmark/blob/master/test_coap_publish/cp7_coap_pub_jwt.go>
