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  - 签名颁发