Skip to content

为 OAuth 登录交换增加授权码防重放与部署级限流 #61

Description

@Serein207

背景

前端 BFF 已增加单进程 token bucket 和并发闸门,但多副本部署下各实例状态独立,不能作为完整安全边界。AuthService/Login 仍需要在后端或可信网关实现共享限流和授权码防重放。

需求

  • 飞书 OAuth authorization code 只能成功交换一次;重复使用应返回稳定的认证错误。
  • 在共享存储或可信 ingress 上实现多副本一致的速率限制,至少限制全局突发和可信客户端来源的持续请求速率。
  • 并发交换同一 code 时只能有一个成功。
  • 限流响应使用可识别的 Connect 错误码,并返回可供 BFF 转换为 Retry-After 的重试时间。
  • 不使用可伪造且未经网关清洗的 X-Forwarded-For 作为唯一安全依据。
  • 日志、指标和错误响应不得记录 authorization code、access token 或原始会话 Cookie。

可观测性

  • 记录成功、失败、重放拒绝、限流拒绝和上游飞书超时的计数与延迟指标。
  • 日志仅使用脱敏请求标识,能够排查问题但不能恢复凭据。

验收标准

  • 多副本并发压测下仍满足全局限制。
  • 覆盖同 code 串行重放、并发重放、突发流量、限流恢复和共享存储异常测试。
  • 正常登录不受影响,限流与认证错误可以被前端区分。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions