Dependency Injection Extension Methods
AddIdentityServer
return a builder object that provides many extension methods to add IdentityServer specific services
to DI. Here’s a list grouped by feature areas.
var idsvrBuilder = builder.Services.AddIdentityServer();
Configuration Stores
Section titled “Configuration Stores”Several convenience methods are provided for registering custom stores:
-
AddClientStore<T>
Registers a custom
IClientStore
implementation. -
AddCorsPolicyService<T>
Registers a custom
ICorsPolicyService
implementation. -
AddResourceStore<T>
Registers a custom
IResourceStore
implementation. -
AddIdentityProviderStore<T>
Registers a custom
IIdentityProviderStore
implementation.
The in-memory configuration stores can be registered in DI with the following extension methods.
-
AddInMemoryClients
Registers
IClientStore
andICorsPolicyService
implementations based on the in-memory collection ofClient
configuration objects. -
AddInMemoryIdentityResources
Registers
IResourceStore
implementation based on the in-memory collection ofIdentityResource
configuration objects. -
AddInMemoryApiScopes
Registers
IResourceStore
implementation based on the in-memory collection ofApiScope
configuration objects. -
AddInMemoryApiResources
Registers
IResourceStore
implementation based on the in-memory collection ofApiResource
configuration objects.
Caching Configuration Data
Section titled “Caching Configuration Data”Extension methods to enable caching for configuration data:
-
AddInMemoryCaching<T>
To use any of the caches described below, an implementation of
ICache<T>
must be registered in DI. This API registers a default in-memory implementation ofICache<T>
that’s based on ASP.NET Core’sMemoryCache
. -
AddClientStoreCache<T>
Registers aIClientStore
decorator implementation which will maintain an in-memory cache ofClient
configuration objects. The cache duration is configurable on theCaching
configuration options on theIdentityServerOptions
. -
AddResourceStoreCache<T>
Registers a
IResourceStore
decorator implementation which will maintain an in-memory cache ofIdentityResource
andApiResource
configuration objects. The cache duration is configurable on theCaching
configuration options on theIdentityServerOptions
. -
AddCorsPolicyCache<T>
Registers a
ICorsPolicyService
decorator implementation which will maintain an in-memory cache of the results of the CORS policy service evaluation. The cache duration is configurable on theCaching
configuration options on theIdentityServerOptions
. -
AddIdentityProviderStoreCache<T>
Registers a
IIdentityProviderStore
decorator implementation which will maintain an in-memory cache ofIdentityProvider
configuration objects. The cache duration is configurable on theCaching
configuration options on theIdentityServerOptions
.
Test Stores
Section titled “Test Stores”The TestUser
class models a user, their credentials, and claims in IdentityServer.
Use of TestUser
is similar to the use of the “in-memory” stores in that it is intended for when prototyping,
developing, and/or testing.
The use of TestUser
is not recommended in production.
-
AddTestUsers
Registers
TestUserStore
based on a collection ofTestUser
objects.TestUserStore
is e.g. used by the default quickstart UI. Also registers implementations ofIProfileService
andIResourceOwnerPasswordValidator
that uses the test users as a backing store.
Signing keys
Section titled “Signing keys”Duende IdentityServer needs key material to sign tokens. This key material can either be created and managed automatically or configured statically.
Duende IdentityServer supports X.509 certificates (both raw files and a reference to the certificate store), RSA keys and EC keys for token signatures and validation. Each key can be configured with a (compatible) signing algorithm, e.g. RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 or ES512.
You can configure the key material with the following methods:
-
AddSigningCredential
Adds a signing key that provides the specified key material to the various token creation/validation services.
-
AddDeveloperSigningCredential
Creates temporary key material at startup time. This is for dev scenarios. The generated key will be persisted in the local directory by default (or just kept in memory).
-
AddValidationKey
Adds a key for validating tokens. They will be used by the internal token validator and will show up in the discovery document.
Additional services
Section titled “Additional services”The following are convenient to add additional features to your IdentityServer.
-
AddExtensionGrantValidator
Adds an
IExtensionGrantValidator
implementation for use with extension grants. -
AddSecretParser
Adds an
ISecretParser
implementation for parsing client or API resource credentials. -
AddSecretValidator
Adds an
ISecretValidator
implementation for validating client or API resource credentials against a credential store. -
AddResourceOwnerValidator
Adds an
IResourceOwnerPasswordValidator
implementation for validating user credentials for the resource owner password credentials grant type. -
AddProfileService
Adds an
IProfileService
implementation. The default implementation (found inDefaultProfileService
) relies upon the authentication cookie as the only source of claims for issuing in tokens. -
AddAuthorizeInteractionResponseGenerator
Adds an
IAuthorizeInteractionResponseGenerator
implementation to customize logic at authorization endpoint for when a user must be shown a UI for error, login, consent, or any other custom page. The default implementation can be found in theAuthorizeInteractionResponseGenerator
class, so consider deriving from this existing class if you need to augment the existing behavior. -
AddCustomAuthorizeRequestValidator
Adds an
ICustomAuthorizeRequestValidator
implementation to customize request parameter validation at the authorization endpoint. -
AddCustomTokenRequestValidator
Adds an
ICustomTokenRequestValidator
implementation to customize request parameter validation at the token endpoint. -
AddRedirectUriValidator
Adds an
IRedirectUriValidator
implementation to customize redirect URI validation. -
AddAppAuthRedirectUriValidator
Adds an “AppAuth” (OAuth 2.0 for Native Apps) compliant redirect URI validator (does strict validation but also allows
http://127.0.0.1
with random port). -
AddJwtBearerClientAuthentication
Adds support for client authentication using JWT bearer assertions.
-
AddMutualTlsSecretValidators
Adds the X509 secret validators for mutual TLS.
-
AddIdentityProviderConfigurationValidator
Adds an IdentityProvider configuration validator.
-
AddBackchannelAuthenticationUserValidator
Adds the backchannel login user validator.
-
AddBackchannelAuthenticationUserNotificationService
Adds the backchannel login user validator.