mcpField
O
oauth-expert

oauth-expert

github.com/rightnow-ai安全18.2k120 次安装24 周前更新
代码仓库

关于 oauth-expert

oauth-expert 面向设计 OAuth 2.0 和 OpenID Connect 认证与授权的开发者,涵盖安全流程、令牌验证与生命周期管理,以及跨应用类型的身份联合。

主要功能

  1. 01Authorization Code 与 PKCE
  2. 02JWT 验证指导
  3. 03作用域与权限设计
  4. 04令牌存储、刷新与撤销
  5. 05OIDC 与身份联合模式

适用场景

  1. 01保护 SPA 和移动应用登录
  2. 02配置服务间授权
  3. 03管理令牌刷新与退出
  4. 04支持多个身份提供方

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rightnow-ai/openfang --skill oauth-expert

安装后在 Claude Code 中输入/oauth-expert确认已加载。

详细介绍

OAuth 和 OpenID Connect 专家

一位身份与访问管理专家,精通 OAuth 2.0、OpenID Connect 和基于令牌的身份验证架构。此技能为 Web 应用、移动应用、SPA 和机器对机器服务提供指导,帮助实现安全的授权流程、令牌生命周期管理和身份联合模式。

核心原则

  • 对公共客户端(SPA、移动应用、CLI 工具)始终使用 Authorization Code 流程和 PKCE;隐式流程已弃用且不安全
  • 全面验证每个 JWT:在信任其内容前,检查签名算法、签发者(iss)、受众(aud)、过期时间(exp)和生效时间(nbf)声明
  • 将 scope 设计为表示具体权限(read:documents、write:orders),而非宽泛的角色;细粒度 scope 有助于实现最小权限访问
  • 安全存储令牌:Web 应用使用仅限 HTTP 的安全 Cookie,移动应用使用安全存储 API,服务端服务使用加密的凭据存储
  • 将刷新令牌视为高度敏感的凭据;将其绑定到客户端,每次使用时轮换,并设置合理的绝对过期时间

技术

  • 实现 Authorization Code + PKCE:生成随机的 code_verifier,通过 S256 派生 code_challenge,在授权请求中发送 challenge,并在令牌交换时发送 verifier
  • 在不需要用户上下文的服务间身份验证中使用 Client Credentials 流程;严格限制所得令牌的 scope
  • 配置采用滑动窗口过期的令牌刷新:签发短期访问令牌(5–15 分钟)和较长期的刷新令牌(数小时至数天),每次使用时轮换刷新令牌
  • 通过请求 openid scope 实现 OIDC;验证 id_token 的签名和声明,然后使用 userinfo 端点获取其他个人资料数据
  • 为 SPA 设置 Backend-for-Frontend(BFF)模式:由 BFF 服务端处理 OAuth 流程,并将令牌存储在仅限 HTTP 的 Cookie 中,使令牌完全不进入 JavaScript
  • 通过在注销时调用撤销端点,并为必须在过期前失效的 JWT 维护服务端拒绝列表,来实现令牌撤销

常见模式

  • 多租户身份:使用签发者和租户声明,将令牌验证路由到正确的身份提供方,以支持使用自有 IdP 的客户
  • 增强身份验证:访问敏感操作时,通过检查 acr 声明并在身份验证级别不足时启动新的身份验证流程,请求其他身份验证因素(MFA)
  • 令牌交换:使用 OAuth 2.0 Token Exchange(RFC 8693)进行服务间委托,使后端能够代表原始用户获取 scope 受严格限制的令牌
  • 设备授权流程:对于输入受限的设备(电视、CLI 工具),使用设备码授权,让用户通过浏览器在另一台设备上完成授权

应避免的陷阱

  • 不要将访问令牌或刷新令牌存储在 localStorage 中;它们容易受到 XSS 攻击,且页面上的任何 JavaScript 都可以访问
  • 不要在授权请求中省略 state 参数;它通过将请求绑定到用户会话来防止 CSRF 攻击
  • 不要接受未经受众声明验证的令牌;为某个 API 签发的令牌不应被其他 API 接受
  • 不要实现自定义加密令牌格式;应使用经过充分测试的 JWT 库和标准 OAuth/OIDC 规范

评论

支持 Markdown