This guide provides layer-by-layer guidance for migrating your existing application to OpenIddict. Since OpenIddict is only available with ABP v6.0, you will need to update your existing application in order to apply OpenIddict changes.
We are not removing the Identity Server packages and we will continue to release new versions of IdentityServer-related NuGet/NPM packages. That means you won't have an issue while upgrading to v6.0 when the stable version is released. We will continue to fix bugs in our packages for a while. ABP 7.0 will be based on .NET 7. If Identity Server continues to work with .NET 7, we will also continue to ship NuGet packages for our IDS integration.
On the other hand, Identity Server ends support for the open-source Identity Server at the end of 2022. The Identity Server team has decided to move to Duende IDS and ABP will not be migrated to the commercial Duende IDS. You can see the Duende Identity Server announcement from this link.
Use the abp update
command to update your existing application. See the Upgrading docs for more info. Apply the required migrations by following the Migration Guides based on your application version.
-
In MyApplication.Domain.Shared.csproj replace the project reference:
<PackageReference Include="Volo.Abp.IdentityServer.Domain.Shared" Version="6.0.*" />
with
<PackageReference Include="Volo.Abp.OpenIddict.Domain.Shared" Version="6.0.*" />
-
In MyApplicationDomainSharedModule.cs replace the usings and module dependencies:
using Volo.Abp.IdentityServer; ... typeof(AbpIdentityServerDomainSharedModule)
with
using Volo.Abp.OpenIddict; ... typeof(AbpOpenIddictDomainSharedModule)
-
In MyApplication.Domain.csproj replace the project references:
<PackageReference Include="Volo.Abp.IdentityServer.Domain" Version="6.0.*" /> <PackageReference Include="Volo.Abp.PermissionManagement.Domain.IdentityServer" Version="6.0.*" />
with
<PackageReference Include="Volo.Abp.OpenIddict.Domain" Version="6.0.*" /> <PackageReference Include="Volo.Abp.PermissionManagement.Domain.OpenIddict" Version="6.0.*" />
-
In MyApplicationDomainModule.cs replace the usings and module dependencies:
using Volo.Abp.IdentityServer; using Volo.Abp.PermissionManagement.IdentityServer; ... typeof(AbpIdentityServerDomainModule), typeof(AbpPermissionManagementDomainIdentityServerModule),
with
using Volo.Abp.OpenIddict; using Volo.Abp.PermissionManagement.OpenIddict; ... typeof(AbpOpenIddictDomainModule), typeof(AbpPermissionManagementDomainOpenIddictModule),
- Create a folder named OpenIddict under the Domain project and copy the OpenIddictDataSeedContributor.cs under this folder. Rename all the
Ids2OpenId
with your project name. - Delete the IdentityServer folder that contains
IdentityServerDataSeedContributor.cs
which is no longer needed.
You can also create a project with the same name and copy the OpenIddict
folder of the new project into your project.
If you are using MongoDB, skip this step and check the MongoDB layer section.
-
In MyApplication.EntityFrameworkCore.csproj replace the project reference:
<PackageReference Include="Volo.Abp.IdentityServer.EntityFrameworkCore" Version="6.0.*" />
with
<PackageReference Include="Volo.Abp.OpenIddict.EntityFrameworkCore" Version="6.0.*" />
-
In MyApplicationEntityFrameworkCoreModule.cs replace the usings and module dependencies:
using Volo.Abp.IdentityServer.EntityFrameworkCore; ... typeof(AbpIdentityServerEntityFrameworkCoreModule),
with
using Volo.Abp.OpenIddict.EntityFrameworkCore; ... typeof(AbpOpenIddictEntityFrameworkCoreModule),
-
In MyApplicationDbContext.cs replace the usings and fluent api configurations:
using Volo.Abp.IdentityServer.EntityFrameworkCore; ... using Volo.Abp.OpenIddict.EntityFrameworkCore; ... protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); /* Include modules to your migration db context */ ... builder.ConfigureIdentityServer();
with
using Volo.Abp.OpenIddict.EntityFrameworkCore; ... protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); /* Include modules to your migration db context */ ... builder.ConfigureOpenIddict();
If you are using EntityFrameworkCore, skip this step and check the EntityFrameworkCore layer section.
-
In MyApplication.MongoDB.csproj replace the project reference:
<PackageReference Include="Volo.Abp.IdentityServer.MongoDB" Version="6.0.*" />
with
<PackageReference Include="Volo.Abp.OpenIddict.MongoDB" Version="6.0.*" />
-
In MyApplicationMongoDbModule.cs replace the usings and module dependencies:
using Volo.Abp.IdentityServer.MongoDB; ... typeof(AbpIdentityServerMongoDbModule),
with
using Volo.Abp.OpenIddict.MongoDB; ... typeof(AbpOpenIddictMongoDbModule),
-
In MyApplication.DbMigrator.csproj add the project reference:
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
for creating the host builder.
-
In
appsettings.json
replace the IdentityServer section with OpenIddict:"OpenIddict": { "Applications": { "MyApplication_Web": { "ClientId": "MyApplication_Web", "ClientSecret": "1q2w3e*", "RootUrl": "https://localhost:44384" }, "MyApplication_App": { "ClientId": "MyApplication_App", "RootUrl": "http://localhost:4200" }, "MyApplication_BlazorServerTiered": { "ClientId": "MyApplication_BlazorServerTiered", "ClientSecret": "1q2w3e*", "RootUrl": "https://localhost:44346" }, "MyApplication_Swagger": { "ClientId": "MyApplication_Swagger", "RootUrl": "https://localhost:44391" } } }
Replace MyApplication with your application name.
-
In MyApplication.Application.Contracts.csproj replace the project reference:
<PackageReference Include="Volo.Abp.IdentityServer.Application.Contracts" Version="6.0.*" />
with
<PackageReference Include="Volo.Abp.OpenIddict.Pro.Application.Contracts" Version="6.0.*" />
-
In MyApplicationApplicationContractsModule.cs replace the usings and module dependencies:
using Volo.Abp.IdentityServer; ... typeof(AbpIdentityServerApplicationContractsModule),
with
using Volo.Abp.OpenIddict; ... typeof(AbpOpenIddictProApplicationContractsModule),
-
In MyApplication.Application.csproj replace the project reference:
<PackageReference Include="Volo.Abp.IdentityServer.Application" Version="6.0.*" />
with
<PackageReference Include="Volo.Abp.OpenIddict.Pro.Application" Version="6.0.*" />
-
In MyApplicationApplicationModule.cs replace the usings and module dependencies:
using Volo.Abp.IdentityServer; ... typeof(AbpIdentityServerApplicationModule),
with
using Volo.Abp.OpenIddict; ... typeof(AbpOpenIddictProApplicationModule),
-
In MyApplication.HttpApi.csproj replace the project reference:
<PackageReference Include="Volo.Abp.IdentityServer.HttpApi" Version="6.0.*" />
with
<PackageReference Include="Volo.Abp.OpenIddict.Pro.HttpApi" Version="6.0.*" />
-
In MyApplicationHttpApiModule.cs replace the usings and module dependencies:
using Volo.Abp.IdentityServer; ... typeof(AbpIdentityServerHttpApiModule),
with
using Volo.Abp.OpenIddict; ... typeof(AbpOpenIddictProHttpApiModule),
-
In MyApplication.HttpApi.Client.csproj replace the project reference:
<PackageReference Include="Volo.Abp.IdentityServer.HttpApi.Client" Version="6.0.*" />
with
<PackageReference Include="Volo.Abp.OpenIddict.Pro.HttpApi.Client" Version="6.0.*" />
-
In MyApplicationHttpApiModule.cs replace the usings and module dependencies:
using Volo.Abp.IdentityServer; ... typeof(AbpIdentityServerHttpApiClientModule),
with
using Volo.Abp.OpenIddict; ... typeof(AbpOpenIddictProHttpApiClientModule),
-
In MyApplicationTestBaseModule.cs remove the IdentityServer related using and PreConfigurations:
using Volo.Abp.IdentityServer;
and
PreConfigure<AbpIdentityServerBuilderOptions>(options => { options.AddDeveloperSigningCredential = false; }); PreConfigure<IIdentityServerBuilder>(identityServerBuilder => { identityServerBuilder.AddDeveloperSigningCredential(false, System.Guid.NewGuid().ToString()); });
from
PreConfigureServices
.
Add a new migration that reflects the underlying changes via dotnet ef migrations add AbpOpenIddictMigration