从彩虹聚合登录迁移
从彩虹聚合登录系统无缝升级到 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 全部能力,包括:
完整迁移建议参考集成指南。
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 端点不影响回调地址
迁移步骤
connect.php?act=login 确认返回登录 URL,完整跑通扫码→回调→获取用户信息。验证清单
-
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 无关,迁移后无需再向彩虹付费。