# 统一认证平台 - 接口对比与选择 ## 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 (前端调用) ```javascript // 场景:用户点击“登录”,前端调用此接口 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; ```