GitHub更改App安装令牌格式:从40字符增至约520字符,CI/CD管道存在故障风险
为什么重要
GitHub从2026年4月27日开始推出新的App安装令牌格式。旧的40字符格式将被替换为前缀为ghs_APPID_JWT、长度约520字符的JWT格式。第一阶段(4月27日至5月中旬)覆盖GitHub Actions和精选集成,第二阶段(5月中旬至6月底)覆盖所有App令牌。开发者必须将数据库字段扩展至520+字符并移除正则表达式/长度检查。
GitHub于2026年4月24日宣布了App安装令牌格式的重大变更,从2026年4月27日起分阶段投入生产。此变更有可能破坏那些硬编码了旧有40字符长度令牌的集成和CI/CD管道——这包括生产环境中大量的自定义脚本和数据库Schema。
新格式具体是什么?
旧格式如下:ghs_ + 36个字母数字字符 = 共40个字符。新格式结构化为JWT(JSON Web Token),前缀为ghs_APPID_JWT,总长度约520字符,并注明”将根据其中存储的数据而有所不同”——换言之,长度不是固定的,取决于内容。JWT是用于以JSON格式安全传输数据的标准化格式(RFC 7519),经加密签名,无需回调服务器即可验证完整性。根据GitHub的公告,JWT”包含有关令牌的详细信息,例如目标安装、应用程序和基本验证详情”。
谁受到影响,何时受影响?
GitHub将推出分为两个阶段。第一阶段(2026年4月27日至5月中旬)涵盖GitHub Actions GITHUB_TOKEN和所谓的精选集成,如Dependabot、Slack和Teams集成。第二阶段(5月中旬至2026年6月底)将变更扩展至所有App安装令牌,包括GitHub Enterprise Cloud和具有Data Residency要求(欧盟、澳大利亚等地区)的环境。实际上,每个在CI/CD管道中使用GitHub Apps进行认证的组织都应立即做好准备。
开发者必须做什么?
GitHub对三个关键操作非常明确:
- 数据库Schema: “任何访问令牌的数据库列都能容纳至少520字符的字符串”——检查所有存储令牌的列支持至少520字符。典型的
VARCHAR(40)或VARCHAR(64)将不再有效。 - 正则表达式检查: 移除所有用于验证令牌格式的
ghs_[A-Za-z0-9]{36}类型的正则表达式模式。新格式包含下划线和不符合旧模式的字符。 - 长度检查: “您的应用程序不要依赖于特定长度的访问令牌”——任何假设固定40字符长度的逻辑都必须修改。
GitHub为什么这样做?
安全和性能动机。JWT格式支持无状态验证——服务器无需在每次调用时进行DB查找来检查令牌有效性,而是可以在本地验证签名。GitHub表示变更”改善了高负载下的令牌发行性能”并带来”更高的大规模可靠性”。换言之——GitHub正在为AI代理和自动化机器人集成的爆炸性增长所带来的调用量增长准备其认证基础设施。
如果忽略这个变更会怎样?
假定旧长度的应用程序在首次遇到新令牌时将开始出错。最常见症状:DB INSERT失败(字符串截断)、正则表达式验证拒绝、Authorization头解析错误。建议在推出赶上组织之前,主动在接下来几天审计所有存储库和自定义Actions。
本文由人工智能基于一手来源生成。