统一认证平台 - 接口对比与选择
1. 接口对比: /login vs /sso-login
1.1 /login (通用登录)
- 定位: 后端服务对接、高安全性场景。
- 认证方式: 仅支持
identifier + password。
- 安全性: 推荐使用 签名 (Sign) 验证。
- 返回: 仅返回
ticket (应用模式) 或 access_token (平台模式)。
- 适用: 后端代理登录、OIDC 应用后端交互。
1.2 /sso-login (简易 SSO)
- 定位: 前端浏览器直接对接、快速实现 SSO。
- 认证方式: 优先使用 Session (Cookie),如果未登录则使用
username + password。
- 安全性: 无签名校验(依赖 HTTPS 和 Cookie 安全)。
- 返回:
redirect_url (包含 ticket)。
- 适用: SPA 前端、需要利用平台已登录状态实现免登的场景。仅支持 SIMPLE_API 类型应用。
2. 详细对比表
| 特性 |
/login |
/sso-login |
| 调用端 |
后端服务器 (推荐) |
前端浏览器 |
| 支持 Session 免登 |
❌ 否 |
✅ 是 (自动检测) |
| 签名验证 |
✅ 支持 |
❌ 不支持 |
| 应用类型 |
全部 |
仅 SIMPLE_API |
| 返回值 |
JSON 数据 (ticket/token) |
JSON (redirect_url) |
3. 使用示例
3.1 /sso-login (前端调用)
// 场景:用户点击“登录”,前端调用此接口
const response = await fetch('{{API_BASE_URL}}/simple/sso-login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
app_id: 'my_app_123'
// 如果确定用户未在平台登录,可附加 username/password
// username: '...', password: '...'
})
});
const data = await response.json();
// 直接跳转,后端已生成好带 ticket 的 URL
window.location.href = data.redirect_url;