Skip to content
We just launched Duende IdentityServer v7.2.0 and BFF v3.0. Check it out!

Hosting

You add the Duende IdentityServer engine to any ASP.NET Core application by adding the relevant services to the dependency injection (DI) system and adding the middleware to the processing pipeline.

You add the necessary services to the ASP.NET Core service provider by calling AddIdentityServer at application startup:

Program.cs
var idsvrBuilder = builder.Services.AddIdentityServer(options =>
{
// ...
});

Many of the fundamental configuration settings can be set on the options. See the IdentityServerOptions reference for more details.

The builder object has a number of extension methods to add additional services to the ASP.NET Core service provider. You can see the full list in the reference section, but very commonly you start by adding the configuration stores for clients and resources, e.g.:

Program.cs
var idsvrBuilder = builder.Services.AddIdentityServer()
.AddInMemoryClients(Config.Clients)
.AddInMemoryIdentityResources(Config.IdentityResources)
.AddInMemoryApiScopes(Config.ApiScopes)

The above is using the in-memory stores, but we also support EntityFramework-based implementations and custom stores. See here for more information.

You need to add the Duende IdentityServer middleware to the pipeline by calling UseIdentityServer.

Since ordering is important in the pipeline, you typically want to put the IdentityServer middleware after the static files, but before the UI framework like MVC.

This would be a very typical minimal pipeline:

Program.cs
app.UseStaticFiles();
app.UseRouting();
app.UseIdentityServer();
app.UseAuthorization();
app.MapDefaultControllerRoute();