控制台
身份验证

登录提供商

配置 Google、Apple、GitHub 和 Microsoft。

项目可以启用 Google、Apple、GitHub 和 Microsoft 登录。 HALO 拥有上游回调交换,而您的应用程序在允许的客户端回调中接收短暂的一次性代码。

#项目回调 URL

https://api.agihalo.com/api/v1/auth/projects/{PROJECT_ID}/providers/{PROVIDER}/callback

#支持的提供商

提供商上游应用程序回调方法
GoogleOAuth Web 应用程序GET
Apple服务 ID/使用 Apple 登录POST 表单响应
GitHubOAuth 应用GET
Microsoft应用注册/Web 重定向GET

将客户端 ID 和密钥保存在 HALO 中,选择提供商范围,然后启用登录。存储的机密经过加密且永远不会返回。

#浏览器 + PKCE流程

// 1. Create an S256 PKCE verifier/challenge in your app.
const url = new URL(
  "https://api.agihalo.com/api/v1/auth/providers/google/authorize"
);

url.searchParams.set("apikey", HALO_PROJECT_PUBLISHABLE_KEY);
url.searchParams.set("redirect_to", "https://app.example.com/auth/callback");
url.searchParams.set("code_challenge", codeChallenge);
url.searchParams.set("code_challenge_method", "S256");
url.searchParams.set("state", clientState);

window.location.assign(url.toString());
  1. 1
    您的应用开始授权

    使用可发布密钥、列入白名单的客户端回调、状态和 S256 质询打开 HALO 提供程序授权 URL。

  2. 2
    HALO 调用提供商

    HALO 存储一次性状态,发送提供者请求,并接收项目特定的回调。

  3. 3
    您的回调接收代码

    HALO 使用短暂的代码和您的原始状态。

  4. 4
    您的应用交换代码

    发送原始验证程序并重定向 URL 以接收项目用户会话。

#安全行为

  • 授权和回调响应使用无存储策略。
  • 重定向 URL 必须与项目配置完全匹配。
  • 状态代码和一次性代码消耗一次并过期。
  • 未经验证的提供商电子邮件和跨项目身份冲突无法关闭。