用途:在 FastAPI 项目中自主实现、验证和调试认证系统,支持多种策略。
主要能力:JWT 令牌认证(Argon2 密码哈希、令牌生成与校验、密钥管理);OAuth2 密码流(OAuth2PasswordRequestForm、Bearer 认证、OpenAPI 集成);OAuth2 scopes 细粒度权限(角色与最小权限控制);Supabase 认证集成(注册、登录、令牌校验)。附带脚本 scripts/setup-jwt.sh、scripts/validate-auth.sh,模板 templates/jwt_auth.py、oauth2_flow.py、supabase_auth.py,示例 protected_routes.py、permission_system.py。
使用方式:先运行 ./scripts/setup-jwt.sh 初始化;按模板实现密码哈希(PasswordHash.recommended()、hash)、令牌生成(jwt.encode,HS256,默认 30 分钟过期,sub 存用户名)与校验(jwt.decode);用 OAuth2PasswordBearer(tokenUrl="token") 定义安全方案,在 /token 登录接口返回 access_token 与 token_type;通过 Security(get_current_active_user, scopes=["items"]) 保护端点;Supabase 用 create_client(SUPABASE_URL, SUPABASE_KEY),调用 sign_up、sign_in_with_password、auth.get_user 校验。最后运行 ./scripts/validate-auth.sh 检查依赖、环境变量与配置。
适用场景:需要无状态认证的移动/Web API、遵循 OAuth2 标准的第一方应用、多租户与基于角色/权限的访问控制、使用 Supabase 托管认证并希望接入 Google、GitHub 等 OAuth 提供商的场景。
限制:资料未提供收费标准、性能数据或官方支持范围;需依赖 fastapi、python-jose[cryptography]、pwdlib[argon2]、supabase,并配置 SECRET_KEY、ALGORITHM、ACCESS_TOKEN_EXPIRE_MINUTES。常见问题包括缺少 SECRET_KEY(可用 openssl rand -hex 32 生成)、401 令牌过期、403 权限不足以及 Supabase 连接失败。