认证是证明你真的是如你所说的那个人 | 认证方法 (Authentication Method) | 例子 | | 优点 (Pros) | 缺点 (Cons) | | ----------------------------- | ---------------------- | ------------------------------------------------- | --------------- | ---------------- | | 基于密码 (Password-based) | 以前的 qq 登录 | | 简单,广泛理解 | 易受攻击,密码疲劳 | | 无密码 (Passwordless) | 手机验证码登录 | | 消除密码相关的漏洞 | 依赖替代渠道(如邮件)的安全性 | | 多因素 (Multi-Factor MFA) | cisco 的 vpn 登录 | | 比仅密码更安全 | 可能对用户来说更复杂 | | 生物特征 (Biometric) | iphone 的 FaceID | | 便捷,难以伪造 | 隐私问题,可能出现假阳性/假阴性 | | [社交认证](社交认证.md) (Social) | Google、微信登录 | | 对用户方便,减少注册阻力 | 依赖第三方服务,隐私问题 | | [单点登录](2%20第二大脑/1%20概念/4%20信息与模式/CS/软件工程/安全/登录/单点登录.md) (Single Sign-On SSO) | qunar 里面 | | 改善用户体验,集中化的认证管理 | 单点故障风险 | | 基于令牌 (Token-based) | 使用令牌(如JWT)而不是每次请求都发送凭证 | 不同的 appcode 之间是不是靠这个?google 的本质就是谷歌给返回了一个 token | 无状态,可扩展 | 令牌管理可能复杂 | | 基于证书 (Certificate-based) | 使用数字证书来识别用户或设备 | | 非常安全,适合机器间通信 | 设置和管理复杂 | | 联合认证 (Federated) | 允许用户跨不同系统或组织进行认证 | | 实现跨域单点登录 | 需要不同组织或系统之间的信任 | 十年经验的开发, 连 Session/Cookie/Token/JWT 都讲不明白 backend authentication 1. API dimension whitelist 2. User dimension UPMS ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/20240118153918.png) ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/20240118153935.png) 这个地方不同的 mock 方式,代表不同的登录鉴权方式 ```mermaid sequenceDiagram participant User participant Frontend participant Google participant Backend User->>Frontend: 点击"使用Google登录" Frontend->>Google: 请求认证 Google->>User: 显示登录/授权页面 User->>Google: 登录并授权 Google->>Frontend: 返回ID token Frontend->>Backend: 发送ID token Backend->>Google: 验证ID token Google->>Backend: 确认token有效 Backend->>Frontend: 创建会话,返回自定义token或session Frontend->>User: 显示登录成功 ```