当前位置:首页 > 行业动态 > 正文

安卓单点登录原理

安卓单点登录通过共享Token实现,用户首次认证后,系统分发凭证,各应用凭Token免密

单点登录核心原理

单点登录(Single Sign-On, SSO)允许用户在多个应用中仅需一次认证即可访问所有关联服务,安卓平台通过以下机制实现:

安卓单点登录原理  第1张

认证流程

  • 中心化认证服务器:所有应用共享同一个认证服务器(如OAuth 2.0授权服务器)。
  • 首次登录:用户在任意一个应用中输入凭证(如用户名/密码),应用将凭证发送至认证服务器。
  • Token发放:认证服务器验证成功后,返回一个短期有效的Access Token(访问令牌)和长期有效的Refresh Token(刷新令牌)。
  • Token共享:首个应用获取Token后,通过安全渠道(如加密SharedPreferences、账户管理器或广播)将Token同步至其他应用。

Token机制

类型 作用 有效期 存储位置
Access Token 用于调用API或验证身份 几分钟~1小时 内存或加密SharedPreferences
Refresh Token 用于续期Access Token 长期有效 加密存储(如EncryptedSharedPreferences)

本地存储与共享

  • SharedPreferences:同一应用内不同进程可通过ContentProviderBroadcastReceiver共享数据。
  • AccountManager:系统级账户管理,支持跨应用共享(需相同签名或权限)。
  • Intent传递:通过隐式Intent在应用间传递Token(需处理安全风险)。

安全性保障

  • Token加密:使用对称加密(如AES)或Android密钥库(Keystore)存储敏感数据。
  • HTTPS传输:所有与认证服务器的通信必须使用HTTPS。
  • 防劫持措施:对Token添加设备指纹(如IMEI、IP地址)或时间戳校验。

实现方式对比

方案 优点 缺点
基于自定义Token 灵活控制有效期,轻量级 需自行维护Token颁发与验证逻辑
OAuth 2.0 标准化协议,支持第三方授权 集成复杂,需处理授权码、回调等流程
第三方SDK(如Firebase) 开箱即用,减少开发成本 依赖外部服务,可能存在隐私合规风险

相关问题与解答

问题1:Access Token过期后如何处理?

解答
当Access Token过期时,应用需使用Refresh Token向认证服务器申请新的Access Token,若Refresh Token也失效,则需重新引导用户登录,流程如下:

安卓单点登录原理  第2张

  1. 检测到Access Token无效 → 触发刷新逻辑。
  2. 携带Refresh Token请求新Token → 更新本地缓存。
  3. 若刷新失败 → 跳转登录页重新认证。

问题2:如何在不同签名的应用间共享Token?

解答
安卓系统默认禁止不同签名应用共享数据,解决方案包括:

安卓单点登录原理  第3张

  • 通过服务器中转:将Token上传至服务器,其他应用从服务器拉取。
  • 使用公共存储空间:如SD卡(需用户授权)或ContentProvider(需声明相同权限)。
  • JWT(JSON Web Token):将用户信息和Token编码为自包含的JWT,通过Intent或剪贴板传递(需配合加密)。
0