Passport 身份认证平台接入文档
概述
Passport 是 Alaikis.com 的企业级 SaaS 身份认证平台,提供 OAuth 2.0 和 OpenID Connect (OIDC) 协议,支持第三方应用快速接入。系统采用统一用户模型,管理员和终端用户共用 user 表。
核心概念
| 概念 | 说明 |
|---|---|
| App | 一个产品/服务,如 "CRM系统",共享 logo 和用户池 |
| Client | App 下的 OAuth 实例,代表一个使用场景(内部/B2B/公开) |
| client_id | Client 的唯一标识,OAuth 流程入口(公开标识,泄露无害) |
| client_secret | Client 密钥,仅服务端使用,不嵌入客户端 |
| open_id | 用户在某个 App 下的唯一标识(app_user.id) |
平台入口
| 系统 | 域名 | 说明 |
|---|---|---|
| 管理后台 | https://authhub.alaikis.com/adm/ | 管理员登录、用户/应用/客户端管理 |
| 商户中心 | https://id.alaikis.com/mc/ | 商户登录、应用/用户/社交登录配置 |
| 用户中心 | https://account.alaikis.com/u/ | 用户登录、注册、找回密码 |
| API 服务 | https://passport.alaikis.com | OAuth/API 接口 |
| 授权页面 | https://auth.alaikis.com | OAuth 授权页面 |
接入方式选择
| 方式 | 适用场景 | 需要的凭证 | 安全等级 |
|---|---|---|---|
| 桌面简化登录 | 桌面客户端、CLI、AI Agent | client_id + 用户密码 | ★★★ |
| OAuth 授权码 | Web 应用( 有服务端) | client_id + client_secret | ★★★★★ |
| OAuth Implicit | 纯前端 SPA | client_id | ★★★★ |
| SSO 跨应用 | 多应用统一登录 | sso_session_id | ★★★★ |
| 社交登录 | 微信/Facebook/LinkedIn 等 | identity_source 配置 | ★★★★ |
桌面客户端简化登录(推荐)
AI 时代的简化授权方案。桌面客户端、CLI 工具、AI Agent 只需 client_id + 用户账号密码,直接获取 token。
安全设计
- client_id 是公开标识(类似 Google OAuth),泄露无害
- client_secret 不嵌入客户端,逆向工程无法获取
- 用户密码由用户输入,不存储在客户端
- 自动绑定用户到应用(首次登录自动激活)
- 不需要回调地址(callback_url)
登录
curl -X POST "https://passport.alaikis.com/api/v1/open/user/desktop/login" \
-H "Content-Type: application/json" \
-d '{
"client_id": "8755645",
"account": "user@example.com",
"password": "your_password"
}'
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
client_id | 是 | 客户端 ID(数字或名称均可) |
account | 是 | 邮箱 / 用户名 / 手机号 |
password | 是 | 用户密码 |
响应:
{
"code": 200,
"data": {
"access_token": "6bc4b62df9cf6ed19b4884810fca3d04",
"token_type": "bearer",
"refresh_token": "250b340cdf8794cea7da1d9a5be11b7c",
"sso_session_id": "a1d50f92f322b0f66a4d1d6dcb9dd489...",
"open_id": 101,
"user_id": 3,
"user_name": "alex",
"email": "alex@example.com",
"merchant_id": 1,
"expires_in": 3600,
"refresh_token_expires_in": 2592000
}
}
Token 刷新
access_token 有效期 1 小时,过期前用 refresh_token 刷新获取新的 access_token。refresh_token 有效期 30 天,每次刷新滚动续期 。
curl -X POST "https://passport.alaikis.com/api/v1/open/user/desktop/refresh" \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "250b340cdf8794cea7da1d9a5be11b7c"
}'
响应:
{
"code": 200,
"data": {
"access_token": "a82e3e314f936e6955adaa5151aba13f",
"token_type": "bearer",
"refresh_token": "250b340cdf8794cea7da1d9a5be11b7c",
"expires_in": 3600,
"refresh_token_expires_in": 2592000
}
}
Token 生命周期:
| Token | 有效期 | 说明 |
|---|---|---|
access_token | 1 小时 | API 调用凭证,过期后需刷新 |
refresh_token | 30 天 | 刷新 access_token,每次刷新滚动续期 |
刷新流程:
登录 → access_token (1h) + refresh_token (30d)
↓ access_token 过期前
刷新 → 新 access_token (1h) + refresh_token 续期 (30d)
↓ 30天无活动
refresh_token 过期 → 需重新登录
获取用户信息
curl -H "auth-token: YOUR_DEV_TOKEN" \
-d "uid=101" \
"https://passport.alaikis.com/api/v1/user/profile/detail"
社交登录
Passport 支持商户级别配置社交登录,用户可通过微信、Facebook、LinkedIn 等第三方平台登录。
支持的平台
| 平台 | 配置字段 | 授权流程 |
|---|---|---|
| 微信 | AppID, AppSecret | 扫码登录 (qrconnect) |
| App ID, App Secret | OAuth 2.0 | |
| Client ID, Client Secret | OAuth 2.0 / OIDC | |
| Client ID, Client Secret | OIDC | |
| GitHub | Client ID, Client Secret | OAuth 2.0 |
| Microsoft | Client ID, Client Secret | OIDC |
| 自定义 OIDC | Client ID, Secret + 端点 | 标准 OIDC |
商户配置流程
- 商户登录商户中心
https://id.alaikis.com/mc/ - 进入「社交登录」页面
- 点击「新建身份源」→ 选择平台
- 填入对应平台的 AppID/AppSecret
- 系统自动生成回调地址:
https://passport.alaikis.com/oidc/callback/{id} - 在社交平台后台配置该回调地址
发起社交登录
GET https://passport.alaikis.com/oidc/federate/{identity_source_id}
用户访问此 URL 后,重定向到社交平台授权页面。授权完成后回调到 Passport,自动创建/匹配用户。
多商户个性化
每个商户独立配置自己的社交登录 IdP:
- 商户 A 可以配置自己的微信 AppID
- 商户 B 可以配置不同的 Facebook 应用
- 用户通过社交登录后自动归属到对应商户
OAuth 2.0 标准授权流程
适用于有服务端的 Web 应用。
1. 授权 URL 构造
GET https://passport.alaikis.com/oauth/v2/authorize
| 参数 | 必填 | 说明 |
|---|---|---|
client_id | 是 | 客户端 ID |
response_type | 是 | code(推荐)或 token |
redirect_url | 是 | 授权回调地址 |
scope | 否 |