api_comparison.md 1.8 KB

统一认证平台 - 接口对比与选择

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;