登录鉴权
更新时间: 2024/07/16 17:50:02
网易云信提供三种登录鉴权的方式,您可以使用三种鉴权方式中的一种或多种:
- 静态 Token 登录:用户手动登录 IM 时,传入静态 Token。静态 Token 默认永久有效,且恒定不变,除非主动调用 服务端 API 刷新 Token 从而导致静态 Token 失效。
- 动态 Token 登录:用户手动登录 IM 时,传入动态 Token。动态 Token 具备时效性,适用于对于用户信息安全有较高要求的业务场景。
- 通过第三方回调登录:用户手动登录 IM 时,由您指定的第三方服务器鉴权(可以是应用服务器)。网易云信服务端不做 IM 登录鉴权。选择第三方回调后,请至 第三方回调配置 进行相关设置。
控制台配置
您可按需在 网易云信控制台 配置您的应用需要采用的登录策略。配置路径:在 网易云信控制台 首页 应用管理 选择应用,再进入 产品功能 > IM 即时通讯 > 基础功能 > 登录策略。
配置后请注意:
- SDK 在登录时会告知网易云信服务器本次登录使用的鉴权方式。若该鉴权方法不在已开通的鉴权类型列表内,则会直接返回登录失败。
- 如未选择相应的登录策略,可能导致用户调用登录接口时因无登录权限而报错,状态码为 403。
- 如果设置了 第三方回调,无论您是否同时设置登录鉴权方式,都需要进行第三方服务器鉴权。因此,请确保设置了 第三方回调 后,您的应用登录逻辑中包含了该策略,避免引起登录失败。
静态 Token 鉴权
静态 Token 鉴权为网易云信默认鉴权方法,用户通过调用服务端 API(/im/v2/accounts
)注册网易云信 IM 账号时需要手动设置或者自动生成 Token,该 Token 永久有效。
客户端 SDK 在登录网易云信服务器时需要填入 account_id
和 token
,网易云信服务器会校验 account_id
和 token
是否一致。
如果用户需要主动更新 Token,或者 Token 不慎泄露需要修改 Token,可以调用 刷新 Token 或 更新账号属性 接口进行更新操作。
动态 Token 鉴权
-
基于
AppKey、AppSecret
和account_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)
-
使用上述方法生成 Token 后,客户端 SDK 将该 Token 填入并登录,服务器校验成功后即登录成功。
- 上述动态 Token 的生成方法依赖
AppSecret
,因此生成逻辑务必在客户的服务器侧完成,以免AppSecret
泄露。 - 本鉴权方法的 Token 是动态且临时有效的,有效期由您自行设置,建议不要太长。
- 上述动态 Token 的生成方法依赖
基于第三方回调的鉴权
本鉴权方法下,网易云信服务端将不校验 token
等字段。
-
在 网易云信控制台 配置第三方回调地址和回调策略(回调失败后是否放行),请参考 开通和配置第三方回调。
-
通过各端的 SDK 登录接口进行登录,调用登录接口时需将鉴权方式(
authType
或auth_type_
)设置为 2,即通过第三方回调鉴权。具体各端的登录接口,请参考各端的登录文档。
-
发起 登录相关回调 的请求。
若未发起登录回调,且登录时选择的鉴权方式为通过第三方回调鉴权,则任意 Token 均可登录成功。
在登录回调中,网易云信服务器会将开发者的
account_id
、token
、客户端类型、客户端 IP、登录自定义扩展等字段抄送给开发者服务器,开发者服务器自行判断是否校验通过,若不通过,网易云信服务端会返回302
错误码给客户端。