定义从请求到过期、重放保护、跨设备延续、会话创建以及在滥用和投递失败情况下的隐私保护响应的一次性电子邮件链接登录流程。
包状态: 参考上下文,已准备好人工审查。合同和测试场景已完成,但不保证采用该实现的系统已通过测试。
决策
在中性请求响应后发放短期、一次性、目的绑定的令牌。在创建会话之前原子性地使用该令牌;对于高风险上下文变更,要求显式的继续步骤和更强的验证。
范围
- 请求、投递、链接打开、确认、使用、会话创建、过期和撤销。
- 账户枚举抵抗、限流、重放处理和审计证据。
- 同设备和跨设备的用户行为。
不包含在此范围内
- 密码恢复、多因素注册,或证明电子邮件在每个产品中控制身份。
- 提供商特定的电子邮件可达性架构。
合同
- 请求响应不透露标识符是否存在,而操作事件私下区分投递决策。
- 令牌至少包含随机熵、目的、账户引用、签发/过期时间和随机数;仅存储验证摘要。
- 使用是从已签发到已使用的原子转换,不能创建两个会话。
- 打开链接时以掩码形式显示目标账户,且在创建会话前需要有意的继续操作。
- 跨设备或风险上下文实质性变化时,调用配置的升级策略。
- 请求另一个链接不会使之前投递的链接变得模糊:配置的“仅最新有效”或“多重有效”策略是明确的。
实施指导
- 按归一化标识符哈希、设备/风险信号和网络范围限流,避免仅用单一维度控制。
- 将重定向目标绑定到签发时捕获的允许列表。
- 使用服务器端会话创建,并在认证后轮换标识符。
- 消费后避免在 URL、日志、分析、引用来源和支持工具中暴露原始令牌。
失败处理和保障措施
- 过期、撤销、格式错误和已使用的链接显示相同的安全恢复操作,不泄露账户状态。
- 如果令牌使用成功但会话投递失败,状态查询可解决结果而无需重新使用令牌。
- 投递提供商重试必须重用相同消息操作,不得无限制生成令牌。
验证和运营
- 监控请求到投递、投递到使用、过期、重放、限流、升级和会话创建失败率。
- 在保护隐私的同时,对突发的标识符哈希或网络集群发出警报。
- 在每次认证发布中执行原子使用和日志脱敏测试。
本包中看似可执行的示例是固定装置和验收合同。
从集合根目录运行 python tools/validate.py 以检查包结构和元数据;然后在目标仓库中实现并执行场景。
采用假设
example.yaml中的名称和数值是采用配置文件,而非通用默认值。- 采用团队必须将参与者、数据类别、错误词汇和所有权映射到其系统。