登录鉴权
更新时间: 2024/07/17 17:57:35
网易云信提供三种登录鉴权的方式,包括静态 Token 鉴权、动态 Token 鉴权和基于第三方回调的鉴权。您可以使用三种鉴权方式中的一种或多种,SDK 在登录时会告知云信服务器本次登录使用的鉴权方式。若该鉴权方法不在已开通的鉴权类型列表内,则会直接返回登录失败。
静态 Token 鉴权
本鉴权方法为云信默认鉴权方法,用户通过调用服务端 API(/user/create.action
)注册云信 IM 账号(即accid
)时需要手动设置或者自动生成 Token,该 Token 永久有效。
客户端 SDK 在登录云信服务器时需要填入accid
和token
,云信服务器会校验accid
和token
是否一致。
如果用户需要主动更新 Token,或者 Token 不慎泄露需要修改 Token,可以调用/user/update.action
或/user/refreshToken.action
进行更新操作。
动态 Token 鉴权
- 在云信控制台创建应用,生成
AppKey
和AppSecret
。 - 基于
AppKey、AppSecret
和accid
,参考如下示例生成 Token。
#先获取当前时间戳,单位毫秒
curTime = 1614764611561
#设置过期时间,单位秒,如600
ttl = 600
#生成signature,将appkey、accid、curTime、ttl、appsecret五个字段拼成一个字符串,进行sha1编码
signature = sha1(appkey + accid + 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
等字段。
-
在云信控制台配置第三方回调地址和回调策略(回调失败后是否放行),详见开通和配置第三方回调。
-
通过各端的 SDK 登录接口进行登录,调用登录接口时需将鉴权方式(
authType
或auth_type_
)设置为 2,即通过第三方回调鉴权。具体各端的登录接口,请参见各端的登录文档。
-
发起登录相关回调的请求。
若未发起登录回调,且登录时选择的鉴权方式为通过第三方回调鉴权,则任意 Token 均可登录成功。
在登录回调中,云信服务器会将开发者的
accid
、token
、客户端类型、客户端 IP、登录自定义扩展等字段抄送给开发者服务器,开发者服务器自行判断是否校验通过,若不通过,云信服务端会返回302
错误码给客户端。
此文档是否对你有帮助?