github.com/glide-im/glide@v1.6.0/docs/消息鉴权.md (about) 1 2 3 - 用户关系鉴权, 消息接收黑名单, 白名单 4 - 接口权限鉴权 5 - 聊天服务用户鉴权 6 7 --- 8 9 - 聊天服务将对所有接收到的消息进行鉴权, 若鉴权失败, 则服务器将拒绝接收该消息, 或断开连接 10 - 聊天服务在每次启动时生成一个随机的`消息服务密钥`, 作为母密钥, 生成其他鉴权令牌 11 12 - 消息服务登录鉴权 13 - 用户通过业务系统登录时, 客户端随机生成连接id, 由`消息服务密钥`+连接id+用户id加密生成 `登录令牌` 14 - 用户连接消息服务时, 需要将`登录令牌` 和 连接id 发送给服务器 15 - 用户聊天消息鉴权 16 - 方案1 17 - 用户登录消息服务后首次给会话发送消息时, 需要先向业务系统获取一个`会话令牌`, 该令牌用于本次连接对该会话的所有消息鉴权 18 - `会话令牌` 由`聊天服务鉴权密钥`+会话id 加密生成 19 - 问题: 若用户在线期间, 会话权限发生变化, 如何使之前令牌失效 20 - 方案2 21 - 用户注册时为用户生成一个 `会话秘钥` , 创建会话时根据权限使用该秘钥对会话id进行签名 22 - 用户发送消息时需要携带签名后的 签名id, 签名id 不会过期, 服务端不保存该 id 23 - 登录消息服务时, 消息服务缓存用户 `会话秘钥`, 收到消息时, 使用 `会话秘钥` 对消息中的 `签名id` 进行验证 24 - 发生不一致时说明用户 `会话秘钥` 发生变化, 拒收该消息, 重新向服务器请求生成新的 `签名会话id` 25 - 签名颁发