Laravel 认证 — 无头多守卫登录,支持双因素认证、通... 笔记

Laravel 认证 — 无头多守卫登录,支持双因素认证、通行密钥和 JWT 会话

Auth for Laravel 是一个开源包,专为基于 API 的无头账户认证 Laravel 应用设计,旨在解决自定义实现中常见的安全漏洞。它提供四种登录方式:密码、魔法链接、邮件验证码和通行密钥,并配备强大的双因素认证挑战引擎,包括强制注册功能。该包提供 RS256 访问令牌和轮换刷新令牌,具备细粒度的设备会话管理,并支持注册、邀请、邮件验证和密码重置等功能。此外,它还包含登录活动日志、限流、新设备警报以及可自定义的风险规则钩子。Auth for Laravel 支持为不同类型的账户(用户、客户、员工)设置独立的守卫,每种守卫拥有独立的模型、配置、端点和 JWT 受众。JSON 端点采用按需启用模式,并可按守卫进行配置;每次状态变更都会触发事件,以支持扩展。安装过程仅需几条 composer 和 artisan 命令,即可发布必要的配置和迁移文件,并附带安装检查器以协助故障排查。开发者通过使守卫的模型实现特定的认证契约和特性来集成该包。登录操作返回令牌对或双因素认证挑战,后者可通过多种方法完成,如 TOTP 代码或通行密钥。该包确保挑战仅使用一次,并以 HMAC 哈希形式存储,同时在验证前统计代码尝试次数,以防止并行猜测攻击。路由配置灵活,允许为每个守卫自定义前缀、名称和中间件,且仅在对应功能启用时路由才生效。Auth for Laravel 谨慎处理安全默认设置:未注册地址的登录尝试返回相同响应,限流发生在密码哈希之前,敏感链接/代码均为单次使用哈希。默认情况下,密码、邮箱或双因素设置的变更会使其他会话失效;重用轮换后的刷新令牌将导致会话终止并触发警报。测试设计用于命中真实守卫和令牌检查,该包还提供辅助函数以便在测试中模拟账户行为。虽然社交登录和单点登录(SSO)并非内置功能,但现有的 SSO 回调可通过该包的 API 发行令牌。该包要求 PHP ^8.4、Laravel 12 或 13、支持原子锁的缓存存储以及邮件传输服务。其采用 MIT 许可证,依赖项主要限于 Laravel、Symfony 及其他 Roundly 包。