在互联网应用开发中,身份认证是保障用户数据安全与系统权限管理的核心环节。随着前后端分离架构的普及,前端在身份认证流程中的角色愈发重要。本文基于多种技术方案与实践案例,系统分析前端身份认证的主流解决方案及其技术实现。
认证方式:
- 用户名/密码登录流程
- 扫码登录流程
- OAuth 2.0:微信登录流程
- SSO:微软登录流程
- WebAuthn:生物识别登录流程
相关概念:
OAuth 2.0
OAuth 2.0是一个授权标准协议。如果你希望将自己应用的数据安全地授权给调用方,建议使用 OAuth 2.0。
根据 OAuth 2.0 协议规范,主要有四个主体:
- 授权服务器,负责颁发 Access Token,Authing 是授权服务器。
- 资源所有者,你的应用的用户是资源的所有者,授权其他人访问他的资源。
- 调用方,调用方请求获取 Access Token,经过用户授权后,Authing 为其颁发 Access Token。调用方可以携带 Access Token 到资源服务器访问用户的资源。
- 资源服务器,接受 Access Token,然后验证它的被赋予的权限项目,最后返回资源。
OpenID Connect
OpenID Connect 是基于 OAuth 2.0 的身份认证协议,增加了Id Token。OIDC 也制定了 OAuth 2.0 中未定义部分的规范,例如 scope,服务发现,用户信息字段等。Authing 支持 OIDC。
在OIDC 规范(opens new window)中,有些名词与 OAuth 2.0 有区别:
- OpenID Provider,指授权服务器,负责签发 Id Token。Authing 是 OpenID Provider。
- 终端用户,Id Token 的信息中会包含终端用户的信息。
- 调用方,请求 Id Token 的应用。
- Id Token由 OpenID Provider 颁发,包含关于终端用户的信息字段。
- Claim指终端用户信息字段。
OIDC 的授权流程与 OAuth 2.0 一样,主要区别在于 OIDC 授权流程中会额外返回 Id Token。
SAML
安全断言标记语言(英语:Security Assertion Markup Language,简称SAML,发音 sam-el)是一个基于XML的开源标准数据格式,它在当事方之间交换身份验证和授权数据,尤其是在身份提供者和服务提供者之间交换。SAML2.0 可以实现基于网络跨域的单点登录(SSO), 以便于减少向一个用户分发多个身份验证令牌的管理开销。
SSO
单点登录(Single Sign On),简称为SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
WebAuthn
WebAuthn(Web Authentication API)是由 FIDO Alliance 和 W3C 联合制定的一种标准,旨在实现强身份认证、无密码登录。它允许 Web 应用使用硬件安全密钥(如 YubiKey)、生物识别(指纹/人脸)或平台认证器(Windows Hello、Face ID)进行用户认证。