wyc2026 实施清单
本文可以直接交给网云穿仓库的开发者或代码助手。平台仓库不替网云穿修改官网、业务 API、桌面客户端、商品、订单或权益。
本轮接入范围
可以开始官网 OIDC、服务端平台 API 适配、Webhook、映射与测试。本版已补齐桌面第一方原生认证接口,客户端可保留扫码、短信验证码、手机号密码 UI,不必打开系统浏览器。 先部署平台新包,在 OIDC 客户端中为 wyc-desktop 显式开启原生登录,再按 原生认证契约 联调。此仓库未修改 WYC 客户端,不能把平台支持等同于 WYC 已完成接入。
配置与职责
| 模块 | 网云穿实施内容 |
|---|---|
| 配置 | 固定 Issuer https://platform.too1.net、产品代码 wyc;按环境分离客户端 |
| 官网登录 | 登录发起、回调、state/nonce/PKCE、JWKS 验签和本地 Session |
| 桌面 | 独立 Native Client;保留现有登录 UI,认证后端抽象为可替换适配层 |
| 用户映射 | 保留原业务用户 ID,以已验证的 sub 与迁移声明建立唯一映射 |
| 服务调用 | 5 分钟 Service Token 缓存、并发合并刷新、最小 Scope、超时 |
| 短信 | 使用平台模板代码;业务验证码仍由所属认证流程验证,不重复实现 SSO 登录 |
| 支付 | 服务端按业务订单定价,创建支付会话、查询、关闭和退款 |
| 事件 | 验签、数据库幂等、权益事务、安全事件撤销本地会话 |
| 运维 | 接入开关、请求编号、错误指标、旧入口回退 |
推荐交付顺序
第一步:只跑通测试账号官网登录
创建 wyc-web,实现 /auth/tuyi/callback,验证正确/错误 state、nonce、PKCE,授权码重放及用户取消。平台登录后在网云穿显示当前业务用户,刷新网页仍保持网云穿自己的会话。
暂时不迁移全量用户、不改原密码、不下线旧登录。断开平台后,已存在的网云穿会话按自身有效期继续使用。
第二步:映射和安全事件
准备合成的旧用户样本(含前导零 ID、同手机号多账号、已存在 SSO 用户)。用导入报告和 claims 核查老资源不丢失,验证并发首次登录、无映射时拒绝误建账号、禁用/撤销后的本地会话处理。
第三步:服务 API
创建 wyc-service;只授权实际需要的 Scope。统一封装基础 URL、Token 获取与缓存、JSON 解析、Idempotency-Key、超时和安全错误处理。请求编号关联日志,不能记录 Authorization 或包含验证码的请求正文。
外部短信 API 只用于产品授权的事务消息;用户登录验证码由平台登录流程处理。客户端不能拿服务密钥直接调发送接口。
第四步:支付与 Webhook
保留网云穿的商品和订单,金额由服务端计算。保存平台 payment_id 与原 external_order_id。通过签名事件 + 查询补偿更新订单,在一次业务事务中只发一次权益。验收重复事件、回跳伪造、金额篡改、退款并发和渠道结果未知。
没有真实支付退款闭环前,不替换已有生产支付入口。
第五步:桌面体验决策与灰度
桌面通过 Native 契约 创建登录事务、在原生界面完成扫码/短信/手机号密码验证并领取一次性授权码,最后用 PKCE 换现有 OIDC Token。旧用户名/旧密码不是平台凭据;新身份必须验证手机号、确认当前协议。客户端保留可切回旧入口的发布开关,逐阶段放量。不要爬平台 HTML、共享 Cookie 或在客户端携带 Service Client Secret。
提交验收证据
- 测试环境和平台版本;实际登记的客户端类型及回调(不含密钥)。
- Web OIDC 正/反例测试和产品 Session 测试结果。
- 旧业务用户 ID ↔ 平台 sub 核查结果及冲突隔离报告。
- 服务 Scope 越权、客户端不含 Secret 的打包扫描。
- Webhook 重复/乱序/重启恢复与事务回滚测试。
- 真实短信及支付退款验收记录;未具备的渠道明确关闭。
- 桌面原生三种方式、扫码绑手机、协议更新、取消/过期、Token 校验及刷新均完成真实联调;没有客户端验收就不能声称“全部接入完成”。
- 灰度开关和恢复旧登录/支付入口的演练记录。
阅读与调试入口
线上文档需部署对应新版二进制后才公开;在此之前可直接阅读仓库同名 Markdown 文件。