单点登录(SSO) API 接入文档
概述
本文档描述如何通过跳转链接的方式实现用户身份鉴权及单点登录,适用于第三方应用快速接入登录验证。
接入流程
- 在您的网站或应用中生成带时间戳、用户名与签名的跳转链接。
- 引导用户访问该链接。
- 系统验证签名与时间戳有效性后,自动完成登录。
链接格式
http://{你的域名}/#/index/apilogin?timestamp=1770372682&username={你的账号}sign=609bc34f47dafa317b5b2f2342a6fa02参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| timestamp | int | 是 | 当前时间戳(Unix 时间戳,精确到秒),链接有效期为 10 分钟 |
| username | string | 是 | 用户的登录标识,支持 手机号 或 邮箱 |
| sign | string | 是 | 根据 timestamp 和 username 及 Secret 计算得到的 MD5 签名,用于安全校验 |
签名生成规则
- 将参数
timestamp与username按timestamp=值&username=值的格式拼接。- 示例:
timestamp=1770372682&username=13800138000
- 示例:
- 在拼接后的字符串末尾加上您的 Secret 密钥(由系统提供)。
- 示例:
timestamp=1770372682&username=13800138000YourSecretKey
- 示例:
- 将最终字符串进行 MD5 加密(32位小写),得到签名。
- 示例:
sign = md5("timestamp=1770372682&username=13800138000YourSecretKey")
- 示例:
注意:参数顺序必须严格按照上述顺序拼接,Secret 密钥需妥善保管,不可泄露。
示例代码(签名计算)
以下为 Python 示例代码:
python
import hashlib
import time
secret = "YourSecretKey" # 请替换为实际密钥,在系统管理配置-单点登录-API接入获取
timestamp = int(time.time())
username = "13800138000"
# 拼接参数
raw_str = f"timestamp={timestamp}&username={username}{secret}"
# 生成 MD5 签名
sign = hashlib.md5(raw_str.encode()).hexdigest()
print(f"timestamp: {timestamp}")
print(f"username: {username}")
print(f"sign: {sign}")注意事项
- 链接必须在 timestamp 对应时间起的 10 分钟内使用,否则失效。
- 签名验证失败或参数错误将跳转至登录失败页。
- 请确保服务器时钟与接入系统时钟同步,避免时间戳偏差。
- username 需使用 URL 编码(如果包含特殊字符)。
返回结果
用户访问链接后,系统将自动完成登录并跳转至指定首页(或原请求页),无需额外页面操作。
如遇到问题,请联系系统管理员获取 Secret 密钥或协助调试。