You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从IdentityServer3迁移至Duende IdentityServer6的方案及相关问题咨询

IdentityServer3 迁移到 Duende IdentityServer6 最佳方案

有没有自动完成迁移的简便命令?

没有直接的一键迁移命令。IdentityServer3基于.NET Framework,而Duende IdentityServer6属于ASP.NET Core生态,两者的架构、配置模型、数据库Schema差异极大,目前没有官方或第三方工具能自动完成全量迁移。

最佳迁移方案(并非只能新建项目复制逻辑)

推荐分阶段迁移,步骤如下:

  • 搭建全新Duende IdentityServer6基础项目
    用官方模板初始化项目:dotnet new isempty,先配置好基础身份认证体系——如果原项目用了ASP.NET Identity,需要先把用户数据迁移到ASP.NET Core Identity(可通过EF Core反向工程+数据导入脚本完成.NET Framework到.NET Core的Identity数据迁移)。
  • 手动映射迁移配置数据
    原SQL Server里的客户端、范围、流程等数据需要手动映射到Duende的模型:
    • 原IdentityServerClients表 → Duende的Clients表,注意字段对应:比如原Flow字段要转换成Duende的AllowedGrantTypes(如原AuthorizationCode对应authorization_code);原RedirectUris、PostLogoutRedirectUris等需要拆分到Duende的关联表(ClientRedirectUris、ClientPostLogoutRedirectUris);AllowedScopes对应ClientScopes表。
    • 原IdentityServerScopes表 → Duende的IdentityResources和ApiScopes:区分原范围是身份类(如openid、profile)还是API类,分别导入到对应表中。
      建议先让Duende生成初始数据库Schema,再编写SQL脚本批量导入并转换原数据。
  • 重写适配业务逻辑
    原IdentityServer3的自定义逻辑(如自定义授权验证、令牌扩展、用户信息端点定制等)不能直接复制,需要基于Duende提供的ASP.NET Core接口重写,比如原ICustomAuthorizeRequestValidator换成Duende的IAuthorizationRequestValidator,或者适配ASP.NET Core的授权中间件。
  • 并行运行与逐步切换
    先让新Duende实例和原IdentityServer3并行部署,将部分客户端切换到新实例测试授权、令牌获取、登录流程,验证无误后再全量切换客户端。

能否复用同一台MS SQL Server?

可以复用同一台SQL Server,但不建议共用同一个数据库:

  • 如果共用数据库,需注意两者默认表前缀都是IdentityServer,会导致表名冲突,必须为Duende配置不同的表前缀(在Duende配置中设置TablePrefix参数),或者修改原IdentityServer3的表前缀。
  • 分开数据库能避免两个实例的读写操作互相干扰,更利于维护和故障排查。

内容的提问来源于stack exchange,提问作者MAK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:45:34