从彩虹聚合登录迁移

从彩虹聚合登录系统无缝升级到 UserMatrix 的完整指南。

背景

彩虹聚合登录是国内早期的 OAuth 2.0 聚合登录商业系统,采用加密源码交付。UserMatrix 在协议层完全兼容彩虹的 connect.php 接口,老应用可以零改动或极小改动完成迁移,同时获得 UMID 联邦身份、RBAC 权限、多租户、数据主权等增量能力。

兼容性承诺:UM 的 connect.php?act=login/callback/query/check_token 接口签名与彩虹完全一致,老代码无需改动即可指向 UM。

为什么升级

对比维度彩虹聚合登录UserMatrix
源码加密商业源码,无法二次开发核心开源,自主可控
身份各平台 OpenID 分散,无统一身份UMID 联邦身份,跨平台识别同一用户
数据数据锁定在平台,无法导出数据归用户所有,可导出/迁移/删除
扩展封闭体系,无法扩展插件体系,可自由扩展登录方式与业务模块
权限无细粒度权限RBAC 角色权限 + 6 种登录策略
多租户不支持应用分组、租户隔离、域名授权

迁移方案对比

方案代码改动耗时推荐场景
A. 配置切换1 行5 分钟快速验证,老应用不想改代码
B. SDK 替换3 行15 分钟想用 UM SDK 获得签名自动化等能力
C. 完整迁移多处1-2 天深度集成 UMID/RBAC/多租户

方案 A:配置切换(0 改动)

UM 兼容彩虹聚合登录的 connect.php 接口,只需把 API 地址改为 UM 即可:

// 修改前
'api_url' => 'https://old-domain/connect.php'

// 修改后
'api_url' => 'https://um.yunjii.cn/php/connect.php'

方案 A 需要在 UM 控制台为你的应用补充授权域名,否则回调会被拒绝。详见域名授权文档

方案 B:SDK 替换(推荐)

替换为 UM SDK,获得签名自动生成、防重放、Token 管理等完整能力:

// 替换前
require 'Rainbow.class.php';
$rb = new Rainbow(['appid' => 'xxx', 'appkey' => 'xxx']);

// 替换后
require 'UM.class.php';
$um = new UM($appid, $appkey, $callback, $apiurl);

// 后续调用方式完全一致
$loginUrl = $um->login('wx', $state);
$user = $um->callback($_GET['code']);

UM SDK 的 login() / callback() / query() 方法签名与彩虹一致,迁移时主要是替换类名和构造参数顺序。详见 PHP SDK 文档

方案 C:完整迁移

深度集成 UM 全部能力,包括:

  • UMID 联邦身份:跨平台账号自动合并,详见 UMID 文档
  • RBAC 权限:6 种登录策略 + 角色权限,详见 RBAC 文档
  • 多租户 SaaS:应用分组、域名授权、策略配置

完整迁移建议参考集成指南

appid / appkey 处理

场景处理方式
全新应用在 UM 控制台创建应用,获取新的 appid/appkey
从彩虹迁移彩虹的 appid/appkey 无法直接复用,需在 UM 重新创建应用并迁移用户绑定关系

彩虹与 UM 的数据库结构不同,appid/appkey 体系不互通。方案 A(配置切换)适用于「先用 UM 接管新登录,老用户逐步重新绑定」的过渡场景;如需保留老用户绑定关系,请联系云集技术支持获取数据迁移脚本。

redirect_uri 处理

不需要改 redirect_uri,因为:

  • OAuth 回调地址与应用自身域名绑定(如 https://your-app.com/login/callback
  • 不是回调到 UM 或彩虹的域名
  • 切换 API 端点不影响回调地址

迁移步骤

登录 um.yunjii.cn/console,创建应用并获取新的 appid/appkey,配置授权域名。
根据代码改动意愿选择方案 A/B/C。
按对应方案修改 API 地址或替换 SDK。
调用 connect.php?act=login 确认返回登录 URL,完整跑通扫码→回调→获取用户信息。
先切部分流量到 UM,观察日志无异常后再全量切换。
确认稳定后移除彩虹的 API 地址配置。

验证清单

  • connect.php?act=login&appid=YOUR_APPID&type=wx 返回登录 URL
  • OAuth 完整流程跑通(生成 URL → 扫码 → 回调 → 获取用户信息)
  • check_token 接口返回 code: 1
  • connect.php?act=query 二次查询正常返回
  • 签名验证通过(MD5 字典序 + timestamp)
  • 5 分钟 code 缓存生效,无 40163 重复消费

常见问题

Q: 彩虹的老用户数据能迁移过来吗?

A: 可以,但需要数据迁移脚本。彩虹的用户绑定表结构与 UM 不同,建议联系云集技术支持获取一对一迁移方案。通常 2 天内完成。

Q: 迁移期间可以双跑吗?

A: 可以。新登录走 UM,老用户首次访问时引导重新绑定(走 UM 的 OAuth 流程),过渡期双入口并行,无冲突。

Q: 方案 A 的兼容性会一直保持吗?

A: 会。UM 的 connect.php 接口签名是长期兼容承诺,不会破坏性变更。建议条件允许时升级到方案 B 获得更多能力。

Q: 彩虹的付费授权怎么处理?

A: UM 核心开源(MIT),SaaS 订阅按量付费。彩虹的付费授权与 UM 无关,迁移后无需再向彩虹付费。