该模式用于在软件系统中实现身份认证:在允许访问前验证主体(用户、服务、设备)的身份,是授权与审计的前提。适用场景包括设计新的登录或身份验证系统、评审既有认证机制、对接外部身份提供方(OAuth、SAML)、实现 API 认证(密钥、令牌)以及建立用户操作审计记录。
核心角色:主体(发起操作)、执行点 Enforcer(拦截请求,确保处理前完成认证,必须嵌入系统)、验证器 Verifier(比对凭据与证据)、证据提供方(存储或提供证据,可为内部或外部)。数据元素包括 credential(主体提供的身份证明)、evidence(验证凭据所用数据)、principal(验证成功后的已认证身份)、action(主体要执行的操作)。
认证流程:主体携操作与凭据请求,Enforcer 拦截并转交 Verifier,Verifier 向证据提供方索取证据并比对;成功则将操作与 principal 交由系统处理,失败则返回认证错误。注册阶段建立凭据与证据对,有三种方式:主体自定标识与凭据、混合式(主体提供标识、系统生成凭据)、系统全分配,并需确认主体确实拥有所声称身份。
凭据因素分为所知(密码、PIN)、所有(令牌、密钥、设备)、所是(生物特征)。安全注意事项包括:Enforcer 不可绕过、置于系统边界并考虑纵深防御;证据需加密存储、完整性校验、限制访问;实施速率限制、指数退避与账户锁定以防暴力破解;更改凭据前须验证当前凭据、更新后强制重新认证并注销会话;重置采用带外验证、令牌限时、不暴露账户是否存在;记录认证尝试但不记录凭据。相关模式有密码认证、不透明令牌认证、可验证令牌(JWT)、多因素认证、基于会话的访问控制。常见漏洞包括认证机制缺陷、撞库、弱凭据策略、缺少速率限制、不安全的凭据存储、会话固定和绕过认证检查。实现示例提供 Python 与 Node.js/Express 中安全密码校验的正误对比代码。本资料未提供收费、价格或平台信息。