项目可以启用 Google、Apple、GitHub 和 Microsoft 登录。 HALO 拥有上游回调交换,而您的应用程序在允许的客户端回调中接收短暂的一次性代码。
#项目回调 URL
https://api.agihalo.com/api/v1/auth/projects/{PROJECT_ID}/providers/{PROVIDER}/callback#支持的提供商
| 提供商 | 上游应用程序 | 回调方法 |
|---|---|---|
| OAuth Web 应用程序 | GET | |
| Apple | 服务 ID/使用 Apple 登录 | POST 表单响应 |
| GitHub | OAuth 应用 | 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您的应用开始授权
使用可发布密钥、列入白名单的客户端回调、状态和 S256 质询打开 HALO 提供程序授权 URL。
- 2HALO 调用提供商
HALO 存储一次性状态,发送提供者请求,并接收项目特定的回调。
- 3您的回调接收代码
HALO 使用短暂的代码和您的原始状态。
- 4您的应用交换代码
发送原始验证程序并重定向 URL 以接收项目用户会话。
#安全行为
- 授权和回调响应使用无存储策略。
- 重定向 URL 必须与项目配置完全匹配。
- 状态代码和一次性代码消耗一次并过期。
- 未经验证的提供商电子邮件和跨项目身份冲突无法关闭。