用户认证
提示
盘古 OS
的设计仍在逐步改进与完善中,本文将随时发生变化,感兴趣的朋友们可以时刻保持关注;- 在下方的版权声明中有本文作者的联系方式,有不同意见和相关建议的朋友可以与其保持联系;
- 也可在本文底部的评论区登录 Github 后,直接发表您的观点;
版权声明
- 文章作者: flytreeleft - flytreeleft@crazydan.org
- 文章链接: https://studio.crazydan.org/docs/pangu-os/system-design/user-auth
- 版权声明: 本文章采用许可协议《署名 4.0 国际 (CC BY 4.0)》。 转载或商用请注明来自 Crazydan Studio!
本文探讨的是应用系统中的用户认证设计,并非操作系统本身的用户认证机制。
系统设计要点
- 由统一的应用客户端实现对应用的 UI 渲染和状态管理,类似 Web 浏览器的能力
- 统一管理用户个人信息,并自动附加到应用的状态管理数据中,以融合到各个应用的 UI 中
- 应用不能强制获取和保存用户个人信息,用户个人信息仅保存在本地客户端中
- 应用所必须的用户信息,必须明确声明,并获得用户许可,否则,客户端将提供伪数据
- 应用客户端支持多用户,并以本地账密方式进行用户认证,同时管理各个用户的应用密钥
- 单用户模式也通过密码机制防止被他人操作
- 应用与客户端之间采用密钥对实现无账密访问和安全连接
- 双方通过密钥对(公钥、私钥)能够解密交互数据,则视为认证成功
- 消除帐号和密码
- 消除认证 Token 或 Session
客户端认证
- 类似本地操作系统的用户登录和注销机制
- 客户端的服务为系统的非用户帐号运行,系统用户仅能访问其服务,不能直接查看和操作其数据
- 通过用户密码的长度、复杂度等信息,在本地认证密钥中加入随机字符后,再将其加密, 从而降低被逆向破解的风险
- 加密后的客户端数据可以同步至公共的外部服务中,从而确保用户数据的安全性
应用注册
- 应用与用户之间为一对一关系,不同的应用均有唯一的用户认证密钥
- 客/服两端的连接信道通过服务端的私钥和公钥加密或解密
- 私钥严格保存在服务侧
- 公钥公开给任意客户端
应用访问
- 应用需要验证用户的合法性,以确保查看和操作是由数据所有者发出,
故而,仅需对请求数据加密,无需再加密响应数据
- 若无请求数据,则需提供对某个随机或固定字符串的加密结果, 服务端通过能否解密请求数据来判定用户是否合法