在《icomet消息推送原理与常用指令》这篇文章中介绍了icomet的消息推送实现方式但是未涉及到安全认证,本文会介绍token认证的实现方式。首先需要在配置文件icomet.conf中开启token认证(将auth项由none修改为token),修改为如下配置:
......
front:
listen: 0.0.0.0:8100
# none|token
auth: token
max_channels: 100000
......
然后重新启动icomet服务
./icomet-server icomet.conf -s rstart -d
这样就开启了token认证,开启token后客户端无法直接订阅到消息,需要在原有地址上增加token这个参数,token是在创建频道的接口中返回的,创建频道API:
http://服务器地址:端口/sign?cname=频道名称[&expires=60]
其中可加可选参数过期时间,这样请求后会返回一个token,数据格式为:
{
"type": "sign",
"cname": "a",
"seq": 8,
"token": "47463a751dfe1609739198985a260138",
"expires": 30,
"sub_timeout": 30
}
只要有客户端和服务器处于连接状态token是不会发生变化的,客户端在订阅是需要增加token才可以订阅到信息。