# 统一认证平台 - 票据交互 (Ticket Exchange) ## 1. 概述 当用户已在 **源应用 (Source App)** 登录,需要无缝跳转到 **目标应用 (Target App)** 且实现免登录时,使用此接口。 **Base URL**: `{{API_BASE_URL}}/simple` (请根据实际部署环境替换) ## 2. 交互流程 1. **源应用**后端调用 `POST /exchange` 获取跳转 URL (包含目标应用的 Ticket)。 2. **源应用**前端重定向用户浏览器到该 URL。 3. **目标应用**接收请求,提取 `ticket`。 4. **目标应用**后端调用 `POST /validate` 验证票据并登录用户。 ## 3. 接口定义 ### 3.1 获取跳转 URL (Exchange) - **URL**: `POST /exchange` - **Content-Type**: `application/json` **Request Body**: | Field | Type | Required | Description | |---|---|---|---| | `app_id` | string | Yes | **源应用** ID | | `target_app_id` | string | Yes | **目标应用** ID | | `user_mobile` | string | Yes | 用户手机号 (身份标识) | | `timestamp` | int | Yes | 当前时间戳 | | `sign` | string | Yes | 签名 (**使用源应用 Secret**) | **Response (200)**: ```json { "ticket": "TICKET-for-target-app-...", "redirect_url": "http://target-app-b.com/sso/callback?ticket=TICKET-..." } ``` *注*: `redirect_url` 自动取自目标应用配置的 `redirect_uris` 的第一个地址。 ### 3.2 验证票据 (Validate) 目标应用接收到 ticket 后进行验证。 - **URL**: `POST /validate` - **注意**: 此时 `app_id` 为**目标应用** ID,签名需使用**目标应用 Secret**。 ## 4. 常见错误 - `404 Not Found`: 应用 ID 错误或用户不存在。 - `400 Bad Request`: 签名验证失败。