目录
一、WebAuthn 概述
1.1 核心概念
1.2 核心优势
1.3 技术栈支持
1.4 工作原理
二、WebAuthn 架构实现及工作流程简述
2.1 组成部分
2.2 架构实现
2.3 注册与认证流程
1. 注册流程(Registration)
2. 认证(Authentication)
三、WebAuthn 应用场景
四、WebAuthn 选型指南
4.1 业务适用性分析
4.2 身份验证方式选型
4.3 技术选型(后端框架支持)
4.4 兼容性与部署建议
4.5 安全设计要点
4.6 商业认证平台选型(若不自建)
五、流程图建议
WebAuthn(Web Authentication API)是由 FIDO Alliance 和 W3C 联合制定的一种标准,旨在实现强身份认证、无密码登录。它允许 Web 应用使用硬件安全密钥(如 YubiKey)、生物识别(指纹/人脸)或平台认证器(Windows Hello、Face ID)进行用户认证。
一、WebAuthn 概述
1.1 核心概念
(1)公钥加密: WebAuthn 使用公钥加密技术进行身份验证。用户注册时,系统会生成一对密钥:一个公钥和一个私钥。公钥存储在服务器上,而私钥则安全地保留在用户的设备上(如手机、硬件安全密钥等)。
(2)凭证(Credential): 凭证是用于身份验证的数据结构,通常包括一个公钥和一个唯一的用户标识符。凭证可以存储在多种设备中,例如:
生物识别设备(如指纹传感器、人脸识别)
硬件安全密钥(如 YubiKey)
本地设备认证(如 Windows Hello、Touch ID)
平台内置的安全模块(如 TPM 或 Secure Enclave)
(3)依赖方(Relying Party, RP): 依赖方是指使用 WebAuthn 的网站或服务。它负责管理用户注册和登录流程,并与用户的设备交互以完成身份验证。
(4)认证器(Authenticator): 认证器是用户用来完成身份验证的设备或软件。它可以是一个外部硬件密钥,也可以是集成在用户设备中的功能(如智能手机的生物识别功能)。
(5)用户代理(User Agent): 用户代理通常是浏览器,它充当 Web 应用程序和认证器之间的桥梁。浏览器通过调用操作系统提供的 API 来与认证器通信。
1.2 核心优势
安全性:私钥存储于用户设备本地,服务器仅保存公钥,避免密码泄露风险。
易用性:用户无需记忆复杂密码,通过生物识别或物理密钥即可登录。
跨平台兼容:支持主流浏览器(Chrome、Firefox、Safari 等)和操作系统(Windows、macOS、Android、iOS)。
1.3 技术栈支持
支持浏览器:Chrome, Firefox, Edge, Safari(部分)
支持平台:Windows Hello, macOS Touch ID, Android, iOS, 安全密钥(如 FIDO2 USB/NFC)
1.4 工作原理
WebAuthn 基于 非对称加密(公钥/私钥)实现身份认证,分为 注册 和 认证 两个阶段:
(1)注册阶段
用户请求注册:
用户在浏览器发起注册请求,服务端生成随机挑战(Challenge)。
生成密钥对:
浏览器调用 WebAuthn API,由身份验证器(如 Windows Hello)生成公钥和私钥。
绑定公钥与用户账户:
公钥和凭证 ID 通过浏览器发送至服务端,服务器存储公钥并关联用户账户。
(2)认证阶段
用户请求登录:
用户输入账户名,服务端生成新的挑战(Challenge)。
签名验证:
浏览器将挑战转发给身份验证器,使用私钥对挑战进行签名。
服务端验证签名:
服务端使用存储的公钥验证签名有效性,确认用户身份。
关键点:
私钥永不离开用户设备,签名过程在本地完成,防止中间人攻击。
挑战(Challenge)为一次性随机值,避免重放攻击。
二、WebAuthn 架构实现及工作流程简述
2.1 组成部分
WebAuthn 系统由三个核心组件构成:
组件 | 职责 |
用户代理(User Agent) | 浏览器或客户端,负责与用户交互、调用 WebAuthn API,并与服务端通信。 |
身份验证器(Authenticator) | 生成和管理密钥对的设备,如生物识别器(Touch ID)、硬件密钥(YubiKey)等。 |
Relying Party(依赖方) | 服务端或应用程序,负责发起挑战、验证签名,并管理用户公钥数据。 |
2.2 架构实现
WebAuthn 的典型架构包括以下层级:
(1)客户端层
浏览器:实现 WebAuthn API,与身份验证器交互(如调用 Windows Hello)。
身份验证器:硬件或软件模块,负责密钥生成、签名和用户验证(如指纹识别)。
(2)服务端层
挑战生成:服务端动态生成随机挑战值(Challenge),确保每次认证唯一性。
公钥管理:存储用户公钥和凭证 ID,用于后续签名验证。
业务逻辑:处理注册/登录请求,集成 WebAuthn SDK(如 FIDO2 库)。
(3)通信协议
HTTPS/TLS:保障浏览器与服务端之间的数据传输安全。
CTAP(客户端到验证器协议):定义浏览器与外部硬件验证器(如 USB 密钥)的通信标准(如 CTAP1/CTAP2)。
2.3 注册与认证流程
1. 注册流程(Registration)
用户访问网站并选择注册。
网站(依赖方)向浏览器发送请求,要求生成一个新的凭证。
浏览器调用操作系统的 WebAuthn API,并提示用户进行身份验证(例如插入硬件密钥或使用生物识别)。
认证器生成一对公钥和私钥,并将公钥返回给浏览器。
浏览器将公钥和其他元数据发送到网站,网站将其存储为该用户的凭证。
2. 认证(Authentication)
用户访问网站并选择登录。
网站向浏览器发送挑战(challenge),要求用户证明其拥有之前注册的凭证。
浏览器调用 WebAuthn API,并提示用户进行身份验证。
认证器使用私钥对挑战进行签名,并将签名结果返回给浏览器。
浏览器将签名结果发送到网站,网站验证签名是否正确,从而确认用户的身份。
三、WebAuthn 应用场景
WebAuthn 具有广泛的应用场景,包括但不限于:
无密码登录: 完全取代传统的用户名和密码登录方式,提供更安全的无缝登录体验。
多因素认证(MFA): 作为强有力的第二因素,与密码或其他认证方式结合使用,提高账户安全性。例如,用户可以使用密码登录,然后使用指纹或安全密钥进行二次验证。
高安全性应用: 对于需要极高安全性的场景,例如金融服务、政府机构等,WebAuthn 可以提供更可靠的身份验证保障。
企业安全: 员工可以使用安全密钥或生物识别进行安全登录企业内部应用和资源。
移动设备认证: 利用移动设备内置的生物识别功能进行快速安全的身份验证。
跨平台认证: 漫游认证器允许用户在不同的设备和操作系统上使用相同的安全密钥进行认证。
四、WebAuthn 选型指南
4.1 业务适用性分析
业务场景 | 适配建议 | 原因说明 |
ToB 企业后台管理系统 | ✅ 强烈推荐 | 降低账号泄露风险,提升管理员登录安全性 |
金融/支付系统 | ✅ 强烈推荐 | 满足强身份验证需求(SCA)与法规要求 |
IoT 设备管理平台 | ✅ 推荐 | 可与本地安全模块绑定设备,增强设备唯一性 |
C端移动应用 | ⚠️ 需结合平台生物识别方案 | WebAuthn 在 App 内浏览器兼容性受限,推荐配合平台 SDK |
公共/共享终端登录 | ❌ 不推荐 | 不适合绑定密钥至临时设备或不信任终端 |
4.2 身份验证方式选型
验证方式 | 说明 | 推荐场景 |
平台认证器(platform) | 绑定到操作系统,如 Touch ID、Windows Hello | 企业员工个人设备、内部系统登录 |
跨平台认证器(cross-platform) | 外接 USB/NFC 安全密钥,如 YubiKey | 高安全要求岗位、支持多终端登录的场景 |
✅ 推荐:优先支持 platform + 兼容 cross-platform(备选)
4.3 技术选型(后端框架支持)
技术栈 | 支持库(开源) | 状态 |
Node.js | @simplewebauthn/server | 非常活跃 ✅ |
Java | webauthn-server | 官方维护 ✅ |
Python | python-fido2 | 官方维护 ✅ |
Go | duo-labs/webauthn | 社区活跃 ✅ |
PHP | lbuchs/webauthn | 适合中小项目 ✅ |
4.4 兼容性与部署建议
考虑因素 | 推荐选项 |
浏览器支持 | Chrome ≥ 70,Firefox ≥ 66,Edge ≥ 79,Safari ≥ 13 |
客户端支持方式 | 优先平台生物识别,其次支持外接认证器 |
后端部署建议 | 启用 HTTPS,使用 JWT/OAuth2 与 WebAuthn 联合认证 |
数据库存储推荐 | Base64 编码存储公钥、Challenge、Credential ID 等字段 |
防钓鱼建议 | 开启 userVerification: “required” 选项 |
4.5 安全设计要点
要点 | 建议 |
防止回放攻击 | 使用服务器生成一次性 Challenge,并设置短时间有效期 |
绑定用户身份与凭证关系 | 存储 Credential ID 与用户账号强绑定关系 |
多因子支持(MFA) | 可结合 OTP、邮箱验证等形成多因子认证逻辑 |
风险控制策略 | 配合设备指纹、IP、登录位置进行异常检测 |
4.6 商业认证平台选型(若不自建)
平台/服务 | 特点 | 适用场景 |
Auth0 | 支持 WebAuthn,免开发运维,集成快 | 初创公司、快速上线 |
Azure AD B2C | 集成企业 SSO + WebAuthn 支持 | 企业级系统 |
Okta | 企业身份管理平台,支持多因子含 WebAuthn | 安全要求高的企业客户群 |
Passage | 专注无密码登录的 WebAuthn-as-a-Service 平台 | C端体验要求高的服务 |
五、流程图建议
WebAuthn 注册+认证完整流程图(前后端分离)
扩展阅读:
构建可信赖的AIoT:身份识别体系的重塑与安全保障 | 构建可信赖的AIoT:身份识别体系的重塑与安全保障 |
解锁边缘AIoT安全:身份模组选型关键 | 解锁边缘AIoT安全:身份模组选型关键 |
暂无评论内容