登录鉴权

更新时间: 2024/07/16 17:50:02

网易云信提供三种登录鉴权的方式,您可以使用三种鉴权方式中的一种或多种:

  • 静态 Token 登录:用户手动登录 IM 时,传入静态 Token。静态 Token 默认永久有效,且恒定不变,除非主动调用 服务端 API 刷新 Token 从而导致静态 Token 失效。
  • 动态 Token 登录:用户手动登录 IM 时,传入动态 Token。动态 Token 具备时效性,适用于对于用户信息安全有较高要求的业务场景。
  • 通过第三方回调登录:用户手动登录 IM 时,由您指定的第三方服务器鉴权(可以是应用服务器)。网易云信服务端不做 IM 登录鉴权。选择第三方回调后,请至 第三方回调配置 进行相关设置。

控制台配置

您可按需在 网易云信控制台 配置您的应用需要采用的登录策略。配置路径:在 网易云信控制台 首页 应用管理 选择应用,再进入 产品功能 > IM 即时通讯 > 基础功能 > 登录策略

image.png

配置后请注意:

  • SDK 在登录时会告知网易云信服务器本次登录使用的鉴权方式。若该鉴权方法不在已开通的鉴权类型列表内,则会直接返回登录失败。
  • 如未选择相应的登录策略,可能导致用户调用登录接口时因无登录权限而报错,状态码为 403。
  • 如果设置了 第三方回调,无论您是否同时设置登录鉴权方式,都需要进行第三方服务器鉴权。因此,请确保设置了 第三方回调 后,您的应用登录逻辑中包含了该策略,避免引起登录失败。

静态 Token 鉴权

静态 Token 鉴权为网易云信默认鉴权方法,用户通过调用服务端 API(/im/v2/accounts)注册网易云信 IM 账号时需要手动设置或者自动生成 Token,该 Token 永久有效。

客户端 SDK 在登录网易云信服务器时需要填入 account_idtoken,网易云信服务器会校验 account_idtoken 是否一致。

如果用户需要主动更新 Token,或者 Token 不慎泄露需要修改 Token,可以调用 刷新 Token更新账号属性 接口进行更新操作。

动态 Token 鉴权

  1. 网易云信控制台创建应用 后,生成 AppKeyAppSecret

  2. 基于 AppKey、AppSecretaccount_id,参考如下示例生成 Token。

    #先获取当前时间戳,单位毫秒
    curTime = 1614764611561
    #设置过期时间,单位秒,如 600
    ttl = 600
    #生成 signature,将 appkey、account_id、curTime、ttl、appsecret 五个字段拼成一个字符串,进行 sha1 编码
    signature = sha1(appkey + account_id + curTime + ttl + appsecret)
    #组装成 json
    json = {"signature": "xx", "curTime":1614764611561, "ttl": 600}
    #将 json 转成字符串后进行 base64 编码,生成最终的 Token
    token=base64(json)
    
  3. 使用上述方法生成 Token 后,客户端 SDK 将该 Token 填入并登录,服务器校验成功后即登录成功。

    • 上述动态 Token 的生成方法依赖 AppSecret,因此生成逻辑务必在客户的服务器侧完成,以免 AppSecret 泄露。
    • 本鉴权方法的 Token 是动态且临时有效的,有效期由您自行设置,建议不要太长。

基于第三方回调的鉴权

本鉴权方法下,网易云信服务端将不校验 token 等字段。

  1. 网易云信控制台 配置第三方回调地址和回调策略(回调失败后是否放行),请参考 开通和配置第三方回调

  2. 通过各端的 SDK 登录接口进行登录,调用登录接口时需将鉴权方式(authTypeauth_type_)设置为 2,即通过第三方回调鉴权。

    具体各端的登录接口,请参考各端的登录文档。

  3. 发起 登录相关回调 的请求。

    若未发起登录回调,且登录时选择的鉴权方式为通过第三方回调鉴权,则任意 Token 均可登录成功。


    在登录回调中,网易云信服务器会将开发者的 account_idtoken、客户端类型、客户端 IP、登录自定义扩展等字段抄送给开发者服务器,开发者服务器自行判断是否校验通过,若不通过,网易云信服务端会返回 302 错误码给客户端。

此文档是否对你有帮助?
有帮助
去反馈
  • 控制台配置
  • 静态 Token 鉴权
  • 动态 Token 鉴权
  • 基于第三方回调的鉴权