ZANE UNIFIED IDENTITY / INTEGRATION V1

接入“赞恩统一身份认证登录”,
用户不必再注册一次。

在你的网站登录页增加一个“赞恩统一身份认证登录”入口。用户跳转到赞恩完成登录后,你的服务器使用一次性授权码兑换稳定身份标识。

OAuth 风格授权码回调白名单精确匹配应用密钥仅服务端使用稳定 subject_id
01 / CREATE APPLICATION

先在通行证下申请应用

使用你的赞恩统一身份认证账号登录,然后进入 开发者应用,创建一个接入应用。应用创建后会得到:

CLIENT ID公开应用标识

可以出现在浏览器跳转链接中,不需要保密。

CLIENT SECRET应用密钥

仅在创建或更换密钥时展示一次,只能保存在你的服务器。

CALLBACK WHITELIST授权回调白名单

每个应用单独维护,只有精确匹配的 HTTPS 地址可以接收授权结果。

这里的“应用密钥”是 OAuth 客户端密钥 Client Secret,不是用于其他系统的 SSH 私钥,也不应交给网页前端。

02 / AUTHORIZE

把文字按钮改成赞恩登录入口

在你的登录页放一个按钮,文字建议使用“赞恩统一身份认证登录”。点击后跳转到:

GET https://sso.zanekeji.com/oauth/authorize
  ?response_type=code
  &client_id=你的_client_id
  &redirect_uri=https%3A%2F%2F你的网站%2Fauth%2Fzane%2Fcallback
  &state=每次登录新生成的随机字符串
response_type固定为 code。
client_id在开发者应用中复制,公开可见。
redirect_uri必须与回调白名单中的地址完全一致,包括路径和查询参数。
state每次登录生成 16 至 300 个字符的随机值,保存到当前浏览器会话,回调时必须原样核对。

用户如果尚未登录赞恩统一身份认证,会先进入登录页;登录成功后继续完成本次授权。

03 / CALLBACK

在你的授权回调地址核对 state

授权成功后,浏览器会回到白名单中的 redirect_uri,并附带:

https://你的网站/auth/zane/callback
  ?code=sso_一次性授权码
  &state=发起登录时的原始随机值
  1. 1
    确认 state

    与发起登录时保存在服务端会话中的值逐字比较。不一致时立即拒绝。

  2. 2
    保留 redirect_uri

    兑换授权码时提交的地址必须与授权请求和白名单完全相同。

  3. 3
    只兑换一次

    授权码五分钟有效,兑换成功后立即失效。

04 / TOKEN EXCHANGE

由服务器兑换稳定身份

浏览器拿到 code 后,把它发送给你的服务器。你的服务器再使用 Client Secret 请求赞恩统一身份认证:

POST https://sso.zanekeji.com/api/v1/token
Content-Type: application/json

{
  "client_id": "你的_client_id",
  "client_secret": "你的_client_secret",
  "code": "回调收到的_sso_code",
  "redirect_uri": "授权请求使用的同一个地址"
}

Client Secret 不应出现在浏览器代码中。不要把兑换请求直接交给前端执行。

05 / RESPONSE

使用 subject_id 作为稳定账号标识

{
  "ok": true,
  "data": {
    "subject_id": "sso_123",
    "provider": "zane_sso",
    "profile": {
      "username": "Zane",
      "nickname": "沈家辉",
      "email": "zane@example.com",
      "phone": "",
      "avatar": "https://...",
      "legal_version": "2026-10-20.2",
      "privacy_accepted_at": "2026-10-20 12:00:00",
      "terms_accepted_at": "2026-10-20 12:00:00"
    },
    "issued_at": "2026-10-20T12:00:00+08:00"
  }
}

请保存 subject_id 与本地用户账号的对应关系。不要根据昵称、头像或邮箱自动合并不同用户的账号;邮箱和手机号可能被用户更换。

06 / SECURITY

接入必须满足的安全要求

✓ Client Secret 只保存在服务器,不写入网页、App 包、公开代码仓库或聊天记录。

✓ 每次登录生成新的随机 state,并在回调时由服务器核对。

✓ 回调地址必须使用 HTTPS,并已加入当前应用的授权回调白名单。

✓ 授权码只兑换一次,五分钟内有效,失败后重新发起完整登录。

✓ 生产环境不要接受任意跳转地址、通配符域名或未登记的子路径。

✓ 如果怀疑应用密钥泄露,应立即在开发者应用中更换密钥。

接入遇到问题?先核对 Client ID、密钥、state 和回调白名单。
打开开发者应用