对接方式总览(统一接口标准)

云集生态唯一官方接口标准 = OAuth 2.1 + OIDC。本文说明为什么它是首选,并对比所有可用的接入方式(REST / 二维码直出 / SDK / iframe),多种方式是标准之上的灵活备选,而非另立标准。

一句话结论

云集生态(UM / 开放平台 / 所有家族产品)的唯一官方接口标准 = OAuth 2.1 + OpenID Connect (OIDC)

  • 对内(家族产品互相对接):这是唯一固定标准,长期不变、统一维护,覆盖网站 / APP / 小程序。
  • 对外(第三方接入):同样以 OAuth 2.1 为官方推荐;同时提供 SDK / REST / 二维码直出 / iframe 等备选灵活方式,作为标准之上的便利层,方便不同场景的第三方按需取用。
  • 多种接入方式 ≠ 多种标准。它们都收敛到同一个身份后端,区别只在"如何把登录/授权呈现给用户、要不要你方后端参与"。

历史口径中部分文档写过 "OAuth 2.0",现已统一为 OAuth 2.1(= OAuth 2.0 + 强制 PKCE + 废除隐式/密码模式)。契约 MG×UM-对接契约 v1.0 的「契约 1」行为要求本就是 2.1,仅标签此前写成了 2.0,本次已对齐。


为什么 OAuth 2.1 是最好、也是唯一的标准

1. 它是行业共识的"最小安全基线"

OAuth 2.1(RFC 9700,2025 定稿)不是新协议,而是把多年来 OAuth 2.0 的最佳实践固化成了强制要求

要求OAuth 2.0OAuth 2.1
PKCE(防授权码拦截)可选(强制开关就绪,默认关)强制
隐式模式(implicit)允许废除
密码模式(password)允许废除
公开客户端(SPA/APP/小程序)安全靠运气靠规范保底

也就是说,选 OAuth 2.1 = 直接拿到"不会被轻易攻破"的登录流程,不用自己踩坑。

2. 一个标准通吃网站 / APP / 小程序

授权码 + PKCE 是唯一同时适用于三端的范式:

  • 网站(服务端渲染):后端持有 client_secret,走标准授权码流程。
  • SPA / 小程序 / APP(公开客户端):无 client_secret,靠 PKCE + redirect_uri 校验,无需泄露密钥。
  • 同一套 authorize / token / userinfo / revoke / discovery 端点,三端复用,后端只维护一份

3. 不绑定私有实现,未来可平滑演进

  • 基于标准 OIDC discovery(/.well-known/openid-configuration),第三方用 Auth.js / Spring Security / OAuth2 Proxy 等现成库即可接入,不用读我们的私有文档、不用装我们的 SDK
  • 家族新增产品(云集通 / 云集圈 / 云集客 / MG)只要实现同一套端点,就能直接互信,互相对接成本趋近于零
  • 标准向前兼容:今天按 2.1 接,明天换 IdP 也不会推倒重来。

4. 对外统一、对内固定,长期维护成本最低

  • 对外:第三方只学一个标准,文档/SDK/错误码一套就够。
  • 对内:家族产品间只认一个协议(契约 1),不会出现"A 产品用 REST、B 产品用 SDK、C 产品用私有签名"的分裂。
  • 安全补丁(如 PKCE 升级、token 过期策略)在一处改、全家族生效。

当前实现状态(2026-07-14 更新):契约 1 的五个标准端点已全部落地——/oauth/authorize + /oauth/token(授权码 + PKCE 可选校验 + 强制开关 oauth_force_pkce 就绪)、/oauth/userinfo/oauth/revoke/.well-known/openid-configuration 均已上线;refresh_token 独立端点已落地(刷新令牌轮换 + 可吊销,表 um_oauth_refresh_tokens);client_credentials 已支持。PKCE 强制化开关已就绪(默认 0,附 um_oauth_pkce_audit 审计表),观察期结束后在低峰期开启即合规。对外已可用的仍有下方「备选灵活方式」(REST / 二维码 / SDK);它们与 OAuth 2.1 端点共享同一身份后端,迁移时业务代码几乎不用改。


全部接入方式对比

唯一标准是 OAuth 2.1。下表其余方式都是"标准之上的灵活备选",按场景选用,不是替代标准。

维度① 云集通标准接口(OAuth 2.1 + OIDC)② SDK(PHP/JS/Python/小程序)③ REST 直连(connect.php?act=*④ 二维码直出(api/qrcode.php⑤ iframe / widget 嵌入
定位云集生态标准接口标准/REST 的封装(官方推荐低代码)标准之上的底层 REST标准之上的轻量呈现标准之上的嵌入式 UI
适用对象所有新接入、家族产品互联想少写代码的任意语言项目需要服务端精细控制的老系统新项目、SPA、自定义登录弹窗想零前端改动嵌入登录页
是否需要你方后端视客户端类型(SPA 可纯前端 + PKCE)视语言(多数需后端)需要(服务端持 appkey 签名)不需要(纯前端轮询)不需要
安全模型PKCE 强制 + Bearer Token + OIDC claims封装了签名与 PKCEMD5 私有签名 + appkey + timestamp 防重放同 REST,二维码由 UM 服务端生成依赖被嵌套页,受第三方 X-Frame-Options 限制
是否标准/通用✅ 行业标准,通用库可直接接封装私有协议❌ 私有协议❌ 私有协议❌ 私有 + 受限
开发量中(接标准库)低(装包即用)中(手写签名 + 换 token)低(一个 <img> + 轮询)极低(但可用性差)
覆盖端网站 / APP / 小程序 全通全端(随 SDK 语言)网站 / 服务端网站 / H5主要 PC 网页
与官方标准关系就是标准本身备选(封装层)备选(未来收敛到 2.1 端点)备选(呈现层)备选(受限,谨慎用)
成熟度基本落地(discovery/userinfo/revoke 已上线,PKCE 可选校验+强制开关就绪,client_credentials+refresh_token 独立端点已支持,authorize/token 复用)✅ 已可用✅ 已可用✅ 已可用⚠️ 受限,新需求不推荐
推荐度★★★★★ 首选★★★★ 省事(官方推荐封装)★★★★ 老系统兼容★★★★★ 轻量首选☆ 仅遗留兼容

怎么选(30 秒)

  • 🆕 新接入 / 想要长期稳定 / 家族产品互联 → ① 云集通标准接口(OAuth 2.1 + OIDC)(标准一旦就绪即默认)。
  • 📦 用 PHP/JS/Python/小程序、想少写代码 → ② SDK(签名/PKCE 自动处理,官方推荐封装)。
  • 🖥️ 不方便改前端、后端想完全掌控 → ③ REST 直连(当前最稳的可用方案)。
  • 想要最快出登录二维码、纯前端 → ④ 二维码直出(<img src=...> + 轮询)。
  • 🚫 不要为新需求选 ⑤ iframe(微信/支付宝授权页禁止被嵌套,基本不可用)。

所有方式(② SDK / ③ REST / ④ 二维码 / ⑤ iframe)最终都走同一个 UM 身份后端换取 openid / UMID / token用户身份在所有方式间一致。区别只在"呈现"与"谁持密钥",不影响身份互通。


官方标准端点(契约 1,目标形态)

端点路径Method说明
Authorize/oauth/authorizeGET授权码,PKCE 已支持(可选校验,强制开关 oauth_force_pkce 就绪默认关)
Token/oauth/tokenPOSTauthorization_code / refresh_token(刷新令牌轮换+可吊销) / client_credentials(PKCE code_verifier 校验已支持)
Userinfo/oauth/userinfoGET/POSTBearer,返回标准 OIDC claims
Revoke/oauth/revokePOST令牌吊销(RFC 7009),需 client_id + client_secret
Discovery/.well-known/openid-configurationGETOIDC discovery JSON,通用库必读

基地址:https://um.yunjii.cnUM 统一数字身份后端)。open.yunjii.cn独立的开放平台产品,以客户端身份消费 UM 身份 API,并非 UM 的镜像sl.yunjii.cn 为历史镜像(等价主站,逐步弃用)。三者中仅 UM 承载身份后端与数据库,open 不复刻身份逻辑。开放平台与 UM 的宪法级边界见 开放平台与 UM 划界:宪法级边界协议


相关文档