对于使用本站教程搭建的FMO服务器,可以使用以下方法更新至3.0的验证模式。
1 FMO新凭证获取
更新至3.0后,按下菜单键,旋动旋钮找到“凭证”并短按旋钮进入,按照提示长按旋钮会显示新版的凭证,保持在该页面:

确保FMO与电脑/手机等设备在同一网络,访问fmo.local或FMO的IP打开FMO网页后台,点击“参数配置”:

往下滑动,找到“服务器密钥”

根据提示,短按一下FMO的旋钮,这里就会显示密钥了:

点击一键复制即可获得JWT密钥,注意一定不要泄露!为方便后续配置可以将它放到一个安全的位置存储。
2 服务器更新操作
A 非集群的独立服务器
登入EMQX网页后台,选择访问控制->客户端认证,点击右上角创建,选择JWT,点击下一步:

注意选择JWT,在Secret里粘贴从FMO获得的JWT密钥,同时设置payload以确保安全性,点击添加,输入以下内容:
| Claim | Expected Value |
| call | ${username} |
| cid | ${clientid} |

随后点击下方“创建”按钮即可(位于上图中“更新”的位置);
一切正常的话,客户端认证里会有两个数据源,内置数据库是2.0的验证方式,而JWT是3.0的。此时收藏了2.0版本服务器的用户还可以登录,删除内置数据库或关闭启用开关,就只有3.0的FMO可以登入服务器了。
(我们建议在一段时间后不要保留旧的验证方式以提高服务器安全性)

B 集群服务器
以下操作需要在集群所有服务器上操作。(指N个服务器与N个管理员的集群,若是单管理员多服务器,使用A方法在面板中配置即可)
登陆服务器,打开终端,运行以下命令:
sudo vim /etc/emqx/emqx.conf
显示文件内容后,用方向键移动光标,移动到最后一个字符,按下i键,进入编辑模式。
先按右方向键,再按回车,输入以下内容(将“第一步获得的JWT密钥”替换为第一步获得的32位密钥):
authentication = [
{
mechanism = jwt
from = password
algorithm = hmac-based
secret = "第一步获得的JWT密钥"
secret_base64_encoded = false
use_jwks = false
verify_claims {
call = "${username}"
cid = "${clientid}"
}
acl_claim_name = "acl"
disconnect_after_expire = true
}
]
修改好后先按esc键,再输入 :wq! 并回车(即强制保存退出),文件就保存好了。
随后重启服务器:
sudo systemctl restart emqx
服务器重启好后,稍等几分钟再重启FMO,若FMO可以连接服务器并正常广播则说明升级已完成。
注意,集群服务器升级后在访问控制->客户端认证中不显示JWT是正常现象,内置数据库是否保留/启用则决定收藏了服务器的旧版FMO用户能否登入服务器。