项目身份验证会发出短暂的 RS256 访问令牌和不透明的旋转刷新令牌。会话策略按项目配置。
#令牌模型
| 令牌 | 格式 | 使用 |
|---|---|---|
| 访问令牌 | RS256 JWT | 调用用户保护的应用API |
| 刷新令牌 | Opaque halo_rt_… | 轮换会话 |
| 提供商登录代码 | 一次性不透明代码 | 完成社交登录 |
| OAuth 应用令牌 | RS256 JWT + 不透明刷新 | 服务范围访问 |
#刷新轮换
curl -X POST \
"https://api.agihalo.com/api/v1/auth/token?grant_type=refresh_token" \
-H "apikey: $HALO_PROJECT_PUBLISHABLE_KEY" \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "halo_rt_..."
}'#验证访问令牌
GET
/api/v1/auth/.well-known/jwks.json使用可发布密钥标头获取项目公共 JWK 并短暂缓存它。验证以下所有内容:
- 算法为
RS256JWTkid与 JWK 匹配。 - 发行者是
halo-project:{projectId}. - 受众为
halo-project-auth项目用户令牌。 tokenUse是project_auth_access。- 到期、项目 ID、主题、会话 ID 和电子邮件均存在。
GET
/api/v1/auth/user解析当前用户的有效承载访问令牌。
#撤销
POST
/api/v1/auth/logout项目所有者还可以从仪表板列出活动会话并撤销单个会话。用户禁止或删除使将来的会话验证不可用。