7月18日:先把 OAuth 2.0 + S256 PKCE 的安全底子打牢
Monorepo 刚建好两天,我们就面临一个迫在眉睫的需求:我们要开发自己的手机 App(自然客户端),而且群里也有不少懂编程的玩家想写小脚本查服务器状态或自动发帖。如果还让大家直接拿账号密码去调接口,一旦泄漏就是灾难。
于是在 2026 年 7 月 18 日,我参照大厂的开放平台标准,在 sso.igng.net 和 account.igng.net 上线了第一版正规的 OAuth 2.0 开发者平台:
- 强制支持 S256 PKCE:针对手机 App 和桌面端这类没法安全存密钥的公开客户端,接入了
code_challenge校验,防止授权码在半路被截获; - Refresh Token 哈希轮换与家族级吊销:数据库里绝对不存明文令牌,只存 SHA256 哈希;每次刷新都会作废旧令牌、签发新令牌。一旦检测到某个已被使用过的旧 Refresh Token 被再次提交(说明可能被盗了),系统会当场触发家族级熔断(Token Family Revocation),把这一整条授权链上的所有令牌全部作废。
10月升级:为什么拆成「开发者中心」和「开发者接口」两块?
第一版跑了两个多月后,我发现开发者们的需求其实分成了截然不同的两类:有人是在正儿八经做给别人用的第三方应用,需要漂亮的授权弹窗;而更多玩家只是想自己写个 Python 脚本定时签到或者查领地,让他去搭一套完整的 OAuth 回调服务器简直是折磨人。
于是在 2026 年 10 月 8 日至 12 日(Commit bb84e55),我对整个开放平台做了一次大改版,明确拆成了两条腿走路:
- 「开发者中心」(OAuth 应用模式):面向多用户应用。支持邀请团队成员协作管理、配置 Webhook 事件投递(带 HMAC 签名校验与失败重试),还专门提供了一个免审核的沙箱测试模式;
- 「开发者接口」(个人 API Key 模式):面向个人脚本与自动化工具。用户在后台点一下就能生成以
igng_ak_开头的个人专属令牌,拿着放进请求头就能直接调接口,同时网关会根据该用户的社区等级自动执行分档速率限制(Rate Limit)。
配合这次改版,我们一口气梳理并开放了涵盖社区论坛(发帖、评论、专栏、通知)与 Minecraft(角色查询、领地信息、服务器在线状态、跨服仓库)在内的 70 多个标准化接口,并且配齐了在线可调试的接口文档。