Table of Contents

Class ClientTokensExtension

Namespace
Arc4u.OAuth2.Extensions
Assembly
Arc4u.OAuth2.AspNetCore.dll

Registers the unified Authentication:ClientTokens section: a single section where heterogeneous client token scenarios coexist, each entry discriminated by its Scenario property and projected into a named SimpleKeyValueSettings.

public static class ClientTokensExtension
Inheritance
ClientTokensExtension
Inherited Members

Properties

Scenario

Resolves an IClientTokenScenario from its discriminator (the Scenario value), or null when none matches.

Defaults to DefaultScenario(string) (the built-in scenarios). A framework user can reconfigure it via SetScenarioResolver(Func<string, IClientTokenScenario?>) — typically by handling their own discriminators and delegating to DefaultScenario(string) for the rest.

public static Func<string, IClientTokenScenario?> Scenario { get; }

Property Value

Func<string, IClientTokenScenario>

Methods

AddClientTokens(IServiceCollection, IConfiguration, string)

Reads the sectionName section and registers a named SimpleKeyValueSettings per entry, selecting the matching IClientTokenScenario by the entry's discriminator through Scenario. Nothing is registered when the section does not exist or is empty. An entry is registered only once per service collection.

public static void AddClientTokens(this IServiceCollection services, IConfiguration configuration, string sectionName = "Authentication:ClientTokens")

Parameters

services IServiceCollection

The service collection.

configuration IConfiguration

The configuration to read the section from, for example builder.Configuration.

sectionName string

The section to read. The default is Authentication:ClientTokens.

Examples

builder.Services.AddClientTokens(builder.Configuration);

Exceptions

ConfigurationException

An entry has no Scenario, an unknown scenario, an empty authentication type, or is invalid for its scenario.

DefaultScenario(string)

The default resolver: maps the built-in discriminators (Name, Name, Name) to their scenarios.

public static IClientTokenScenario? DefaultScenario(string discriminator)

Parameters

discriminator string

Returns

IClientTokenScenario

SetScenarioResolver(Func<string, IClientTokenScenario?>)

Reconfigures the scenario resolver. Delegate to DefaultScenario(string) to keep the built-ins.

public static void SetScenarioResolver(Func<string, IClientTokenScenario?> resolver)

Parameters

resolver Func<string, IClientTokenScenario>

Examples

ClientTokensExtension.SetScenarioResolver(discriminator => discriminator switch
{
    "MyCustom" => new MyCustomScenario(),
    _ => ClientTokensExtension.DefaultScenario(discriminator)
});