网易账号体系背后承载了:
- 数十个 App、Web、客户端产品
- 超 5 亿注册用户
- 日活数千万、登录请求高峰 >30万 QPS
但你很少遇到“频繁掉线”“多端互踢”或“密码撞库失效”,为什么?
网易账号系统用了 统一认证中台 + 分布式Token管理 + 登录指纹 + 防撞密钥空间管理 等多重架构。
一、网易账号系统整体架构图
二、统一登录核心机制(Token + Session + RefreshToken)
网易使用的是典型 OAuth2 + 自研扩展协议,包括:
- AccessToken(短时有效,10min ~ 2h)
- RefreshToken(长期有效,30天)
- SessionID(多端绑定,服务端可撤销)
POST /login
{
account: 'abc@163.com',
password: '***',
device_id: 'xxx',
app_id: 'netease_music'
}
服务端返回:
{
access_token: "xyz123",
refresh_token: "abc456",
session_id: "sess_8891"
}
✅ 特点:
- 多端可共用 session
- access_token 过期后客户端自动用 refresh_token 替换
- 后端服务统一验证 session_id 签名,有效即放行
三、登录网关 + 多端会话同步
会话同步场景:
- 手机 + 平板 + Web 端同一个账号同时在线
- 一处退出,其他设备同步退出
- 一处修改密码,其他设备强制下线
网易的 SessionCenter 服务维护所有设备会话:
{
uid: 33221,
session_list: [
{ device: 'ios', session_id: 'sess_ios_1' },
{ device: 'web', session_id: 'sess_web_2' }
]
}
👉 支持:
- 每个设备独立 token(可单点踢出)
- 服务端下发事件 → 客户端接收
"强制退出"
通知
四、防撞库系统:如何防止“爆破/撞库/黑产攻击”?
网易结合了多项策略:
1)用户输入密码前就判断风险(账号指纹):
if (isFromAbnormalIP(ip) || deviceRiskScore > 80) {
triggerCaptcha()
}
2)动态加盐密码校验 + 慢哈希算法(Bcrypt/Argon2)
密码不可逆 + 攻击成本极高。
3)撞库特征模型识别(账户字典批量尝试 → 封 IP)
detectLoginPattern(uid, ip) {
if (uid错误次数 > 5 && 同IP多账号尝试) {
block(ip)
}
}
✅ 网易封禁动作延迟仅 <200ms,且全量日志存证。
五、账号绑定与统一用户ID映射
网易全平台账号支持:
- 邮箱、手机、三方登录(微信、QQ、Apple)
- 游戏游客账号绑定迁移
- 所有登录方式最终统一映射到统一 UID
{
uid: 889199,
accounts: {
email: 'a@163.com',
phone: '137****1999',
wx_openid: 'wx_abc91'
}
}
这样可实现:一个身份、多端通用、一站式管理
六、登录安全细节机制
机制 | 说明 |
---|---|
登录验证码 | 动态判断触发时机,避免骚扰正常用户 |
登录设备风控打分 | IP、UA、设备指纹、历史行为建模 |
动态Token签名 | 每个 access_token 附带设备指纹签名 |
登录行为通知 | 用户可查看账号登录历史,手动撤销登录 |
登录场景限流 | 每个IP/UID登录频率受限(防爆破) |
七、实测指标(网易云音乐为例):
指标 | 成绩 |
---|---|
登录延迟 P99 | < 120ms |
多端 session 同步延迟 | < 200ms |
漏登率(误拦合法登录) | < 0.01% |
爆破攻击识别率 | > 98.3% |
平均安全响应时间(封IP/风控阻断) | 180ms 内 |
彩蛋:
“真正的统一登录,不是所有入口通一个接口,而是用户在哪都能安心登录。”