SuperAPI AI 工具集

oauth-integrations

安全与审计

查看项目

更新于 10-15 13:42

技能介绍

用途

该技能面向在 Cloudflare Workers 及其他边缘运行时中实现 OAuth 2.0 认证的开发者,重点覆盖 GitHub 与 Microsoft Entra(Azure AD)两家提供商的接入。

主要能力

GitHub OAuth

  • 必需请求头:GitHub API 有严格的要求,与其他提供商不同。User-Agent 为必需项,缺少时返回 403;建议使用 Accept: application/vnd.github+json。
  • 私有邮箱处理:GitHub 用户可将邮箱设为私有(/user 返回 email: null)。此时需请求 https://api.github.com/user/emails,并筛选 primary 且 verified 的邮箱,且需要 user:email 作用域。
  • 令牌交换:默认返回表单编码,添加 Accept: application/json 头可获取 JSON 响应。
  • 注意事项:回调 URL 必须完全精确,不支持通配符或子目录匹配;令牌不过期,无需刷新流程,但被撤销后需完全重新认证。

Microsoft Entra(Azure AD)OAuth

  • 为何 MSAL 在 Workers 中不可用:MSAL.js 依赖浏览器 API(localStorage、sessionStorage、DOM)和 Node.js crypto 模块,而 Cloudflare 的 V8 isolate 运行时两者皆无。因此需改用手动 OAuth:手动构造 OAuth URL、通过 fetch 直接交换令牌、使用 jose 库验证 JWT。
  • 必需作用域:用户身份使用 openid email profile User.Read;需要刷新令牌(长会话)时增加 offline_access。关键点:Microsoft Graph /me 端点必须包含 User.Read,否则令牌交换成功但获取用户信息返回 403。
  • 用户信息端点:使用 Microsoft Graph /me,邮箱可能位于 data.mail 或 data.userPrincipalName 字段。
  • 租户配置:common 允许任意 Microsoft 账户(个人+工作);organizations 仅工作/学校账户;consumers 仅个人账户;{tenant-id} 仅特定组织。
  • Azure 门户设置:应用注册 → 新注册;平台选择 Web(非 SPA)用于服务端 OAuth;重定向 URI 需同时添加 /callback 和 /admin/callback;证书和密码 → 新建客户端密码。
  • 令牌生命周期:访问令牌默认 60-90 分钟,可通过令牌生命周期策略配置;刷新令牌 90 天,密码更改时撤销;ID 令牌 60 分钟,与访问令牌相同。最佳实践:始终请求 offline_access 作用域,并为超过 1 小时的会话实现刷新令牌流程。

使用方式

该技能以参考指南形式提供代码片段与配置说明,包括 GitHub 请求头示例、私有邮箱处理代码、令牌交换代码、Microsoft 作用域定义、Graph /me 调用示例,以及常见错误与修正对照表。开发者可据此在边缘环境中手动实现 OAuth 流程。

适用场景

适用于需要在 Cloudflare Workers 或其他边缘运行时中集成 GitHub 或 Microsoft Entra 登录、且无法使用传统 Node.js 或浏览器端 OAuth 库的场景。

限制

资料未提供该技能的安装命令、具体收费或价格信息。部分实现细节(如完整代码文件结构、部署步骤)暂未提供。