游戏用户登录
小游戏可以通过SUD OpenPaaS提供的登录能力快速方便的获取到用户身份标识,建立小游戏内的用户体系。
1. 架构概述与参与角色
本流程描述了用户在 APP 内打开游戏时,游戏客户端如何通过 SUD 平台完成身份鉴权,并在游戏服务端建立安全的自定义登录态。 同时,该流程也负责生成后续用于数据加密的底层会话密钥 (sessionKey)。
- APP: 应用客户端
- SUD OP: 集成在客户端内的通信中间件 (SDK)
- Game: 游戏客户端
- Game SVR: 游戏的服务端
- SUD OP SVR: SUD 的服务端(核心鉴权与账号体系管理中枢)
- APP SVR: 应用的服务端(注:在本登录流程中不直接参与交互)
2. 交互时序图
3. 关键步骤说明
整个登录授权流程可以拆解为客户端获取凭证和服务端兑换会话两个核心阶段。
阶段一:客户端获取登录凭证 Code
- 触发登录:
Game客户端调用SUD OP发起login()请求。 - 提取身份标识:
SUD OP向APP发起回调 onGetLegacyUserIdentity(),要求 APP 提供当前用户的在原身份标识信息。 - 返回身份信息:
APP将本地的身份标识userIdentity返回给SUD OP。 - 请求授权码:
SUD OP携带accessToken,userToken(平台内用户标识),gameID以及刚才获取的userIdentity,向SUD OP SVR发起getGameCode网络请求。 - 平台内部生成状态 (关键动作):
SUD OP SVR接收到请求后,在服务端内部执行一系列核心状态生成动作:generateCode():生成与本次登录行为绑定的一次性短效授权码code。generateOpenID(gameID):根据游戏 ID 生成该用户在此游戏内的唯一隔离标识openID。generateUnionID(appGroupID):生成打通同一开发者主体下多个应用的统一标识unionID。
- 下发授权码:
SUD OP SVR将生成的code返回给客户端的SUD OP。 - 透传至游戏:
SUD OP将code响应给Game客户端。
阶段二:服务端兑换会话与密钥
- 游戏服务端验证:
Game客户端拿到code后,调用自己游戏服务端的鉴权接口login(code),请求建立游戏登录态。 - S2S 凭证兑换:
Game SVR作为受信任的后端,携带收到的code、游戏应用的gameID和gameSecret(应用密钥),向SUD OP SVR发起服务端 S2S 请求code2session。 - 生成核心会话密钥 (关键动作):
SUD OP SVR校验code和gameSecret合法后,在内部调用generateSessionKey生成用于数据加密的对称密钥session_key。 - 下发账号数据与密钥:
SUD OP SVR将生成的session_key,连同前一步生成的账号体系标识 (openID,unionID,resUniqueID) 一并响应给Game SVR。 - 建立自定义登录态:
Game SVR在自己的数据库中保存该用户的session_key和各类 ID,并生成属于游戏自己的业务会话(game custom session/ Token),返回给Game客户端。至此,登录闭环完成。
4. 架构上下文与数据流转声明
- 隔离与安全设计:
- SUD 平台通过派发
openID和unionID,实现了不同游戏之间、以及游戏与 APP 之间的数据隔离与映射。 session_key仅在SUD OP SVR和Game SVR这两个受信任的服务端之间流转,从未暴露给Game客户端或APP客户端,保证了后续基于该密钥加密敏感信息时的绝对安全。
- SUD 平台通过派发