从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
相关产品推荐
相关产品推荐

