Filter by title

Migrating from OpenIddict to IdentityServer4 Step by Step Guide

ABP startup templates use the OpenIddict OpenID provider from v6.0.0 by default, and IdentityServer projects were renamed to AuthServer in tiered/separated solutions. This guide provides the v6.0-era, layer-by-layer steps for migrating an existing OpenIddict application to IdentityServer4.

IdentityServer4 is archived and no longer maintained by its owners. ABP doesn't support newer IdentityServer or Duende IdentityServer versions through this module. Use this guide only when an existing system has a compatibility requirement that prevents migration to OpenIddict; new applications should remain on OpenIddict.

IdentityServer4 Migration Steps

These steps target an application that is already on ABP 6.0.x. Keep every Volo.Abp.* package on the exact 6.0.x patch version used by the application. Complete any version update separately with the CLI and migration guides for that release line before applying these provider-replacement steps.

Domain.Shared Layer

  • In MyApplication.Domain.Shared.csproj replace project reference:
<PackageReference Include="Volo.Abp.OpenIddict.Domain.Shared" Version="6.0.*" />

with

<PackageReference Include="Volo.Abp.IdentityServer.Domain.Shared" Version="6.0.*" />
  • In MyApplicationDomainSharedModule.cs replace usings and module dependencies:
using Volo.Abp.OpenIddict;
...
typeof(AbpOpenIddictDomainSharedModule)

with

using Volo.Abp.IdentityServer;
...
typeof(AbpIdentityServerDomainSharedModule)

Domain Layer

  • In MyApplication.Domain.csproj replace project references:
<PackageReference Include="Volo.Abp.OpenIddict.Domain" Version="6.0.*" />
<PackageReference Include="Volo.Abp.PermissionManagement.Domain.OpenIddict" Version="6.0.*" />

with

<PackageReference Include="Volo.Abp.IdentityServer.Domain" Version="6.0.*" />
<PackageReference Include="Volo.Abp.PermissionManagement.Domain.IdentityServer" Version="6.0.*" />
  • In MyApplicationDomainModule.cs replace usings and module dependencies:
using Volo.Abp.OpenIddict;
using Volo.Abp.PermissionManagement.OpenIddict;
...
typeof(AbpOpenIddictDomainModule),
typeof(AbpPermissionManagementDomainOpenIddictModule),

with

using Volo.Abp.IdentityServer;
using Volo.Abp.PermissionManagement.IdentityServer;
...
typeof(AbpIdentityServerDomainModule),
typeof(AbpPermissionManagementDomainIdentityServerModule),

OpenIddictDataSeedContributor

DataSeeder is the most important part for starting the application since it seeds the initial data for both OpenID providers.

  • Create a folder named IdentityServer under the Domain project and copy the IdentityServerDataSeedContributor.cs under this folder. Rename all the OpenId2Ids with your project name.
  • Delete OpenIddict folder that contains OpenIddictDataSeedContributor.cs which is no longer needed.

EntityFrameworkCore Layer

If you are using MongoDB, skip this step and check the MongoDB layer section.

  • In MyApplication.EntityFrameworkCore.csproj replace project reference:

    <PackageReference Include="Volo.Abp.OpenIddict.EntityFrameworkCore" Version="6.0.*" />
    

    with

    <PackageReference Include="Volo.Abp.IdentityServer.EntityFrameworkCore" Version="6.0.*" />
    
  • In MyApplicationEntityFrameworkCoreModule.cs replace usings and module dependencies:

using Volo.Abp.OpenIddict.EntityFrameworkCore;
...
typeof(AbpOpenIddictEntityFrameworkCoreModule),

with

using Volo.Abp.IdentityServer.EntityFrameworkCore;
...
typeof(AbpIdentityServerEntityFrameworkCoreModule),
  • In MyApplicationDbContext.cs replace usings and fluent api configurations:

    using Volo.Abp.OpenIddict.EntityFrameworkCore;
    ...
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
    
        /* Include modules to your migration db context */
    
        ...
        builder.ConfigureOpenIddict();
    

    with

    using Volo.Abp.IdentityServer.EntityFrameworkCore;
    ...
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
    
        /* Include modules to your migration db context */
    
        ...
        builder.ConfigureIdentityServer();
    

Note: Create a new migration after updating the fluent API. Navigate to the EntityFrameworkCore folder and run, for example, dotnet ef migrations add Updated_To_IdentityServer.

MongoDB Layer

If you are using EntityFrameworkCore, skip this step and check the EntityFrameworkCore layer section.

  • In MyApplication.MongoDB.csproj replace project reference:

    <PackageReference Include="Volo.Abp.OpenIddict.MongoDB" Version="6.0.*" />
    

    with

    <PackageReference Include="Volo.Abp.IdentityServer.MongoDB" Version="6.0.*" />
    
  • In MyApplicationMongoDbModule.cs replace usings and module dependencies:

using Volo.Abp.OpenIddict.MongoDB;
...
typeof(AbpOpenIddictMongoDbModule),

with

using Volo.Abp.IdentityServer.MongoDB;
...
typeof(AbpIdentityServerMongoDbModule),

DbMigrator Project

  • In appsettings.json replace the OpenIddict section with IdentityServer because IdentityServerDataSeeder uses this configuration for initial data seeding. Rename the Applications property to Clients and preserve its existing child entries. The minimal valid structure is:

    {
      "IdentityServer": {
        "Clients": {}
      }
    }
    

Test Project

  • In MyApplicationTestBaseModule.cs add 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());
    });
    

    to PreConfigureServices to run authentication related unit tests.

UI Layer

You can follow the migration guides from IdentityServer to OpenIddict in reverse order to update your UIs. You can also check the sample source for Index.cshtml.cs and Index.cshtml in the AuthServer project.

Source code of samples and module

Contributors


Last updated: July 19, 2026 Edit this page on GitHub

Was this page helpful?

Please make a selection.

To help us improve, please share your reason for the negative feedback in the field below.

Please enter a note.

Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

ABP Community Talks
Low-Code, High Precision
13 Aug, 17:00
Online
Watch the Event
ABP Live Webinar
Webinar Calendar Webinar Calendar
Discover
ABP Platform
Register Now
Oct 01
Thursday,
17:00 UTC
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.