在这篇文章中,我们将系统性地对项目中与安全相关的依赖包进行升级。随着 .NET 10 的发布,许多安全组件和认证框架也迎来了新版本,升级这些包不仅能够获得最新的安全修复和功能增强,还能提升整体系统的安全性和兼容性。
本次升级涉及三个与安全相关的核心包:OpenIddict 、Azure.Identity 和 System.IdentityModel.Tokens.Jwt。
- OpenIddict:作为实现 OpenID Connect 和 OAuth 2.0 协议的核心组件,承担着用户认证、授权和令牌管理等关键安全职责。它被多个服务所引用,升级时需要特别注意各服务之间的版本一致性。
- Azure.Identity:提供对 Azure 云服务的身份认证支持,负责管理访问密钥、托管标识等凭据的获取与刷新。升级此包需关注 Azure SDK 的兼容性变更。
- System.IdentityModel.Tokens.Jwt:负责 JWT 令牌的生成、解析与验证,是整个认证体系的底层基础库。版本升级可能涉及默认算法或验证行为的调整,需仔细验证。
由于这三个包均处于系统安全架构的核心位置,任何一个包的升级失误都可能导致认证流程异常,因此本次操作被归类为中风险操作。
TIP:安全包的升级往往涉及底层协议、配置方式以及依赖项的变更,稍有不慎可能导致认证流程异常或安全漏洞。因此,这一操作被归类为中风险操作,建议在充分测试和备份的前提下进行。
一、升级前的准备工作
在正式执行升级操作之前,充分的准备工作是保障升级顺利进行的关键。对于安全包这类高重要性的依赖,贸然升级而不做前期规划,很容易引发难以排查的兼容性问题或运行时异常。
首先,我们需要全面梳理项目中哪些服务引用了 OpenIddict、Azure.Identity 和 System.IdentityModel.Tokens.Jwt 相关的包,以及这些包的当前版本号。在微服务架构下,同一个包可能被多个服务引用,版本不一致会带来潜在的兼容风险,因此需要统一管理、统一升级。
其次,我们需要明确各包的目标版本。分别查阅 OpenIddict、Azure.Identity 和 System.IdentityModel.Tokens.Jwt 的官方发布日志和迁移指南,确认从当前版本到目标版本之间是否存在破坏性变更(Breaking Changes),并提前做好应对预案。
经过梳理,我们整合出来如下表格,列出了需要升级的包、所在的服务、当前版本、目标版本。
| 包名 | 所在的服务 | 当前版本 | 目标版本 |
|---|---|---|---|
OpenIddict.AspNetCore |
IdentityService | 7.0.0 | 7.4.0 |
OpenIddict.EntityFrameworkCore |
IdentityService | 7.0.0 | 7.4.0 |
OpenIddict.Validation.AspNetCore |
Gateway、IdentityService | 7.0.0 | 7.4.0 |
OpenIddict.Validation.ServerIntegration |
Gateway | 7.0.0 | 7.4.0 |
System.IdentityModel.Tokens.Jwt |
IdentityService、Common | 8.12.1 | 8.17.0 |
Azure.Identity |
Gateway | 1.11.4 | 1.21.0 |
二、升级操作
升级认证与安全包的操作,我们依然沿用上一篇文章中介绍的升级方式:将任务交给 AI 来完成。之所以选择这种方式,是因为 AI 能够自动分析各包之间的依赖关系,智能识别版本兼容性问题,并在发现冲突时给出自动解决方案,从而大幅降低人工操作的失误率,同时显著提升升级效率。
在构造提示词时,我们需要将待升级的包信息尽可能完整地传递给 AI,包括包名、所在服务、当前版本和目标版本,同时明确告知 AI 需要确认对 net10.0 目标框架的支持,以及各包之间的兼容性要求。以下是本次升级所使用的提示词:
markdown
请将以下包升级到指定版本,如果包版本之间存在冲突,请自动解决并确保所有相关服务的兼容性,完成升级后进行全面的检查,确保包升级成功。
- [ ] **OpenIddict 7.0.0** → 升级到最新版,确认 `net10.0` TFM 支持
- [ ] 涉及 4 个包,出现在 SP.Gateway 和 SP.IdentityService:
| 包名 | 所在的服务 | 当前版本 | 目标版本 |
|------|---------|---------|---------|
| `OpenIddict.AspNetCore` | IdentityService |7.0.0|7.4.0|
| `OpenIddict.EntityFrameworkCore` | IdentityService |7.0.0|7.4.0|
| `OpenIddict.Validation.AspNetCore` | Gateway、IdentityService |7.0.0|7.4.0|
| `OpenIddict.Validation.ServerIntegration` | Gateway |7.0.0|7.4.0|
| `System.IdentityModel.Tokens.Jwt` | IdentityService、Common |8.12.1|8.17.0|
| `Azure.Identity` | Gateway |1.11.4|1.21.0|
- [ ] **System.IdentityModel.Tokens.Jwt 8.12.1** → 升到最新版,确认与新版 OpenIddict 兼容(SP.Common)
- [ ] **Azure.Identity 1.11.4** → 升到最新版(SP.Gateway)
提示词发送给 AI 之后,AI 会按照指令依次对各服务中的目标包进行版本更新,并在过程中自动处理可能出现的版本冲突。升级完成后,AI 还会对整个项目进行全面的兼容性检查和功能验证,确保升级后系统能够正常编译和运行,认证流程没有因包的变更而受到任何影响。
三、总结
本文系统性地对项目中与安全相关的依赖包进行了升级,涵盖了 OpenIddict、Azure.Identity 和 System.IdentityModel.Tokens.Jwt 三个核心安全组件。通过将升级任务交给 AI 来完成,我们不仅大幅提升了升级效率,还有效降低了人工操作可能带来的失误风险。