Browse Source

Add XML documentation to the dispatcher/factory/handler filter classes

pull/1626/head
Kévin Chalet 3 years ago
parent
commit
a1a0815cff
  1. 11
      gen/OpenIddict.Client.WebIntegration.Generators/OpenIddictClientWebIntegrationGenerator.cs
  2. 12
      src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreConfiguration.cs
  3. 6
      src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlerFilters.cs
  4. 8
      src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionConfiguration.cs
  5. 1
      src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionHandlerFilters.cs
  6. 2
      src/OpenIddict.Client.Owin/OpenIddictClientOwinConfiguration.cs
  7. 5
      src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlerFilters.cs
  8. 7
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpConfiguration.cs
  9. 1
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlerFilters.cs
  10. 6
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationConfiguration.cs
  11. 12
      src/OpenIddict.Client/IOpenIddictClientDispatcher.cs
  12. 11
      src/OpenIddict.Client/IOpenIddictClientFactory.cs
  13. 14
      src/OpenIddict.Client/IOpenIddictClientHandlerFilter.cs
  14. 11
      src/OpenIddict.Client/OpenIddictClientConfiguration.cs
  15. 4
      src/OpenIddict.Client/OpenIddictClientDispatcher.cs
  16. 4
      src/OpenIddict.Client/OpenIddictClientFactory.cs
  17. 25
      src/OpenIddict.Client/OpenIddictClientHandlerFilters.cs
  18. 19
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreConfiguration.cs
  19. 11
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlerFilters.cs
  20. 8
      src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionConfiguration.cs
  21. 1
      src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionHandlerFilters.cs
  22. 2
      src/OpenIddict.Server.Owin/OpenIddictServerOwinConfiguration.cs
  23. 10
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlerFilters.cs
  24. 12
      src/OpenIddict.Server/IOpenIddictServerDispatcher.cs
  25. 11
      src/OpenIddict.Server/IOpenIddictServerFactory.cs
  26. 14
      src/OpenIddict.Server/IOpenIddictServerHandlerFilter.cs
  27. 7
      src/OpenIddict.Server/OpenIddictServerConfiguration.cs
  28. 4
      src/OpenIddict.Server/OpenIddictServerDispatcher.cs
  29. 4
      src/OpenIddict.Server/OpenIddictServerFactory.cs
  30. 42
      src/OpenIddict.Server/OpenIddictServerHandlerFilters.cs
  31. 12
      src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreConfiguration.cs
  32. 1
      src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlerFilters.cs
  33. 8
      src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionConfiguration.cs
  34. 1
      src/OpenIddict.Validation.Owin/OpenIddictValidationOwinConfiguration.cs
  35. 1
      src/OpenIddict.Validation.Owin/OpenIddictValidationOwinHandlerFilters.cs
  36. 13
      src/OpenIddict.Validation.ServerIntegration/OpenIddictValidationServerIntegrationConfiguration.cs
  37. 9
      src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpConfiguration.cs
  38. 1
      src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlerFilters.cs
  39. 12
      src/OpenIddict.Validation/IOpenIddictValidationDispatcher.cs
  40. 11
      src/OpenIddict.Validation/IOpenIddictValidationFactory.cs
  41. 15
      src/OpenIddict.Validation/IOpenIddictValidationHandlerFilter.cs
  42. 11
      src/OpenIddict.Validation/OpenIddictValidationConfiguration.cs
  43. 4
      src/OpenIddict.Validation/OpenIddictValidationDispatcher.cs
  44. 4
      src/OpenIddict.Validation/OpenIddictValidationFactory.cs
  45. 8
      src/OpenIddict.Validation/OpenIddictValidationHandlerFilters.cs

11
gen/OpenIddict.Client.WebIntegration.Generators/OpenIddictClientWebIntegrationGenerator.cs

@ -436,11 +436,7 @@ public sealed partial class OpenIddictClientWebIntegrationConfiguration
public {{ provider.name }}(IServiceProvider provider)
=> _provider = provider ?? throw new ArgumentNullException(nameof(provider));
/// <summary>
/// Ensures the {{ provider.name }} configuration is in a consistent and valid state.
/// </summary>
/// <param name=""name"">The name of the options instance to configure, if applicable.</param>
/// <param name=""options"">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictClientWebIntegrationOptions.{{ provider.name }} options)
{
{{~ for setting in provider.settings ~}}
@ -515,10 +511,7 @@ public sealed partial class OpenIddictClientWebIntegrationConfiguration
{{~ end ~}}
}
/// <summary>
/// Registers the {{ provider.name }} integration in the OpenIddict client options.
/// </summary>
/// <param name=""options"">The options instance to initialize.</param>
/// <inheritdoc/>
public void Configure(OpenIddictClientOptions options)
{
// Resolve the provider options from the service provider and create a registration based on the specified settings.

12
src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreConfiguration.cs

@ -17,10 +17,7 @@ public sealed class OpenIddictClientAspNetCoreConfiguration : IConfigureOptions<
IConfigureOptions<OpenIddictClientOptions>,
IPostConfigureOptions<AuthenticationOptions>
{
/// <summary>
/// Registers the OpenIddict client handler in the global authentication options.
/// </summary>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void Configure(AuthenticationOptions options)
{
if (options is null)
@ -39,6 +36,7 @@ public sealed class OpenIddictClientAspNetCoreConfiguration : IConfigureOptions<
OpenIddictClientAspNetCoreDefaults.AuthenticationScheme, displayName: null);
}
/// <inheritdoc/>
public void Configure(OpenIddictClientOptions options)
{
if (options is null)
@ -50,11 +48,7 @@ public sealed class OpenIddictClientAspNetCoreConfiguration : IConfigureOptions<
options.Handlers.AddRange(OpenIddictClientAspNetCoreHandlers.DefaultHandlers);
}
/// <summary>
/// Ensures that the authentication configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The authentication scheme associated with the handler instance.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, AuthenticationOptions options)
{
if (options is null)

6
src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlerFilters.cs

@ -26,6 +26,7 @@ public static class OpenIddictClientAspNetCoreHandlerFilters
public RequireErrorPassthroughEnabled(IOptionsMonitor<OpenIddictClientAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -42,6 +43,7 @@ public static class OpenIddictClientAspNetCoreHandlerFilters
/// </summary>
public sealed class RequireHttpRequest : IOpenIddictClientHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -64,6 +66,7 @@ public static class OpenIddictClientAspNetCoreHandlerFilters
public RequirePostLogoutRedirectionEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictClientAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -86,6 +89,7 @@ public static class OpenIddictClientAspNetCoreHandlerFilters
public RequireRedirectionEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictClientAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -107,6 +111,7 @@ public static class OpenIddictClientAspNetCoreHandlerFilters
public RequireStatusCodePagesIntegrationEnabled(IOptionsMonitor<OpenIddictClientAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -128,6 +133,7 @@ public static class OpenIddictClientAspNetCoreHandlerFilters
public RequireTransportSecurityRequirementEnabled(IOptionsMonitor<OpenIddictClientAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)

8
src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionConfiguration.cs

@ -26,6 +26,7 @@ public sealed class OpenIddictClientDataProtectionConfiguration : IConfigureOpti
public OpenIddictClientDataProtectionConfiguration(IDataProtectionProvider dataProtectionProvider)
=> _dataProtectionProvider = dataProtectionProvider;
/// <inheritdoc/>
public void Configure(OpenIddictClientOptions options)
{
if (options is null)
@ -37,12 +38,7 @@ public sealed class OpenIddictClientDataProtectionConfiguration : IConfigureOpti
options.Handlers.AddRange(OpenIddictClientDataProtectionHandlers.DefaultHandlers);
}
/// <summary>
/// Populates the default OpenIddict ASP.NET Core Data Protection server options
/// and ensures that the configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The name of the options instance to configure, if applicable.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictClientDataProtectionOptions options)
{
if (options is null)

1
src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionHandlerFilters.cs

@ -17,6 +17,7 @@ public static class OpenIddictClientDataProtectionHandlerFilters
/// </summary>
public sealed class RequireDataProtectionTokenFormat : IOpenIddictClientHandlerFilter<GenerateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(GenerateTokenContext context)
{
if (context is null)

2
src/OpenIddict.Client.Owin/OpenIddictClientOwinConfiguration.cs

@ -16,6 +16,7 @@ namespace OpenIddict.Client.Owin;
public sealed class OpenIddictClientOwinConfiguration : IConfigureOptions<OpenIddictClientOptions>,
IPostConfigureOptions<OpenIddictClientOwinOptions>
{
/// <inheritdoc/>
public void Configure(OpenIddictClientOptions options)
{
if (options is null)
@ -27,6 +28,7 @@ public sealed class OpenIddictClientOwinConfiguration : IConfigureOptions<OpenId
options.Handlers.AddRange(OpenIddictClientOwinHandlers.DefaultHandlers);
}
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictClientOwinOptions options)
{
if (options is null)

5
src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlerFilters.cs

@ -27,6 +27,7 @@ public static class OpenIddictClientOwinHandlerFilters
public RequirePostLogoutRedirectionEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictClientOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -49,6 +50,7 @@ public static class OpenIddictClientOwinHandlerFilters
public RequireRedirectionEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictClientOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -70,6 +72,7 @@ public static class OpenIddictClientOwinHandlerFilters
public RequireErrorPassthroughEnabled(IOptionsMonitor<OpenIddictClientOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -86,6 +89,7 @@ public static class OpenIddictClientOwinHandlerFilters
/// </summary>
public sealed class RequireOwinRequest : IOpenIddictClientHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -107,6 +111,7 @@ public static class OpenIddictClientOwinHandlerFilters
public RequireTransportSecurityRequirementEnabled(IOptionsMonitor<OpenIddictClientOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)

7
src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpConfiguration.cs

@ -21,10 +21,15 @@ public sealed class OpenIddictClientSystemNetHttpConfiguration : IConfigureOptio
#if !SUPPORTS_SERVICE_PROVIDER_IN_HTTP_MESSAGE_HANDLER_BUILDER
private readonly IServiceProvider _provider;
/// <summary>
/// Creates a new instance of the <see cref="OpenIddictClientSystemNetHttpConfiguration"/> class.
/// </summary>
/// <param name="provider">The service provider.</param>
public OpenIddictClientSystemNetHttpConfiguration(IServiceProvider provider)
=> _provider = provider ?? throw new ArgumentNullException(nameof(provider));
#endif
/// <inheritdoc/>
public void Configure(OpenIddictClientOptions options)
{
if (options is null)
@ -36,8 +41,10 @@ public sealed class OpenIddictClientSystemNetHttpConfiguration : IConfigureOptio
options.Handlers.AddRange(OpenIddictClientSystemNetHttpHandlers.DefaultHandlers);
}
/// <inheritdoc/>
public void Configure(HttpClientFactoryOptions options) => Configure(Options.DefaultName, options);
/// <inheritdoc/>
public void Configure(string? name, HttpClientFactoryOptions options)
{
if (options is null)

1
src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlerFilters.cs

@ -16,6 +16,7 @@ public static class OpenIddictClientSystemNetHttpHandlerFilters
/// </summary>
public sealed class RequireHttpMetadataUri : IOpenIddictClientHandlerFilter<BaseExternalContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseExternalContext context)
{
if (context is null)

6
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationConfiguration.cs

@ -15,11 +15,7 @@ namespace OpenIddict.Client.WebIntegration;
[EditorBrowsable(EditorBrowsableState.Advanced)]
public sealed partial class OpenIddictClientWebIntegrationConfiguration : IConfigureOptions<OpenIddictClientOptions>
{
/// <summary>
/// Populates the default OpenIddict client Web integration options
/// and ensures that the configuration is in a consistent and valid state.
/// </summary>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void Configure(OpenIddictClientOptions options)
{
if (options is null)

12
src/OpenIddict.Client/IOpenIddictClientDispatcher.cs

@ -8,8 +8,20 @@ using System.ComponentModel;
namespace OpenIddict.Client;
/// <summary>
/// Represents a service able to dispatch events to a list of handlers.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Advanced)]
public interface IOpenIddictClientDispatcher
{
/// <summary>
/// Dispatches an event of the specified type to the handlers that
/// implement <see cref="IOpenIddictClientHandler{TContext}"/>.
/// </summary>
/// <typeparam name="TContext">The type of the context associated with the event to dispatch.</typeparam>
/// <param name="context">The context associated with the event to dispatch.</param>
/// <returns>
/// A <see cref="ValueTask"/> that can be used to monitor the asynchronous operation.
/// </returns>
ValueTask DispatchAsync<TContext>(TContext context) where TContext : BaseContext;
}

11
src/OpenIddict.Client/IOpenIddictClientFactory.cs

@ -8,8 +8,19 @@ using System.ComponentModel;
namespace OpenIddict.Client;
/// <summary>
/// Represents a service responsible for creating transactions.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public interface IOpenIddictClientFactory
{
/// <summary>
/// Creates a new <see cref="OpenIddictClientTransaction"/> that is used as a
/// way to store per-request data needed to process the requested operation.
/// </summary>
/// <returns>
/// A <see cref="ValueTask"/> that can be used to monitor the asynchronous
/// operation, whose result returns the created transaction.
/// </returns>
ValueTask<OpenIddictClientTransaction> CreateTransactionAsync();
}

14
src/OpenIddict.Client/IOpenIddictClientHandlerFilter.cs

@ -6,7 +6,21 @@
namespace OpenIddict.Client;
/// <summary>
/// Represents a handler filter responsible for determining whether a
/// handler should process an event depending on the specified context.
/// </summary>
/// <typeparam name="TContext">The type of the context associated with events filtered by this instance.</typeparam>
public interface IOpenIddictClientHandlerFilter<in TContext> where TContext : BaseContext
{
/// <summary>
/// Determines whether the handler referencing this filter instance should
/// be instantiated and process the event, based on the specified context.
/// </summary>
/// <param name="context">The context associated with the event to process.</param>
/// <returns>
/// A <see cref="ValueTask"/> that can be used to monitor the asynchronous operation,
/// whose boolean result determines whether the handler will be invoked or not.
/// </returns>
ValueTask<bool> IsActiveAsync(TContext context);
}

11
src/OpenIddict.Client/OpenIddictClientConfiguration.cs

@ -21,15 +21,14 @@ public sealed class OpenIddictClientConfiguration : IPostConfigureOptions<OpenId
{
private readonly OpenIddictClientService _service;
/// <summary>
/// Creates a new instance of the <see cref="OpenIddictClientConfiguration"/> class.
/// </summary>
/// <param name="service">The OpenIddict client service.</param>
public OpenIddictClientConfiguration(OpenIddictClientService service)
=> _service = service ?? throw new ArgumentNullException(nameof(service));
/// <summary>
/// Populates the default OpenIddict client options and ensures
/// that the configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The authentication scheme associated with the handler instance.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictClientOptions options)
{
if (options is null)

4
src/OpenIddict.Client/OpenIddictClientDispatcher.cs

@ -10,6 +10,9 @@ using Microsoft.Extensions.Options;
namespace OpenIddict.Client;
/// <summary>
/// Represents a service able to dispatch events to a list of handlers.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Advanced)]
public sealed class OpenIddictClientDispatcher : IOpenIddictClientDispatcher
{
@ -30,6 +33,7 @@ public sealed class OpenIddictClientDispatcher : IOpenIddictClientDispatcher
_provider = provider ?? throw new ArgumentNullException(nameof(provider));
}
/// <inheritdoc/>
public async ValueTask DispatchAsync<TContext>(TContext context) where TContext : BaseContext
{
if (context is null)

4
src/OpenIddict.Client/OpenIddictClientFactory.cs

@ -10,6 +10,9 @@ using Microsoft.Extensions.Options;
namespace OpenIddict.Client;
/// <summary>
/// Represents a service responsible for creating transactions.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public sealed class OpenIddictClientFactory : IOpenIddictClientFactory
{
@ -27,6 +30,7 @@ public sealed class OpenIddictClientFactory : IOpenIddictClientFactory
_options = options ?? throw new ArgumentNullException(nameof(options));
}
/// <inheritdoc/>
public ValueTask<OpenIddictClientTransaction> CreateTransactionAsync()
=> new(new OpenIddictClientTransaction
{

25
src/OpenIddict.Client/OpenIddictClientHandlerFilters.cs

@ -16,6 +16,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireAuthorizationCodeValidated : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -32,6 +33,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireBackchannelAccessTokenValidated : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -48,6 +50,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireBackchannelIdentityTokenPrincipal : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -64,6 +67,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireBackchannelIdentityTokenValidated : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -80,6 +84,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireClientAssertionTokenGenerated : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -96,6 +101,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireFrontchannelAccessTokenValidated : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -112,6 +118,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireFrontchannelIdentityTokenPrincipal : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -128,6 +135,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireFrontchannelIdentityTokenValidated : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -145,6 +153,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireInteractiveGrantType : IOpenIddictClientHandlerFilter<ProcessChallengeContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessChallengeContext context)
{
if (context is null)
@ -166,6 +175,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireJsonWebTokenFormat : IOpenIddictClientHandlerFilter<GenerateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(GenerateTokenContext context)
{
if (context is null)
@ -182,6 +192,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireLoginStateTokenGenerated : IOpenIddictClientHandlerFilter<ProcessChallengeContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessChallengeContext context)
{
if (context is null)
@ -198,6 +209,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireLogoutStateTokenGenerated : IOpenIddictClientHandlerFilter<ProcessSignOutContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessSignOutContext context)
{
if (context is null)
@ -214,6 +226,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequirePostLogoutRedirectionRequest : IOpenIddictClientHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -230,6 +243,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireRedirectionRequest : IOpenIddictClientHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -246,6 +260,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireRefreshTokenValidated : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -262,6 +277,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireStateTokenPrincipal : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -278,6 +294,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireStateTokenValidated : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -294,6 +311,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireTokenEntryCreated : IOpenIddictClientHandlerFilter<GenerateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(GenerateTokenContext context)
{
if (context is null)
@ -310,6 +328,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireTokenIdResolved : IOpenIddictClientHandlerFilter<ValidateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ValidateTokenContext context)
{
if (context is null)
@ -326,6 +345,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireTokenPayloadPersisted : IOpenIddictClientHandlerFilter<GenerateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(GenerateTokenContext context)
{
if (context is null)
@ -342,6 +362,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireTokenRequest : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -358,6 +379,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireTokenStorageEnabled : IOpenIddictClientHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -374,6 +396,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireUserinfoRequest : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -390,6 +413,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireUserinfoTokenExtracted : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -406,6 +430,7 @@ public static class OpenIddictClientHandlerFilters
/// </summary>
public sealed class RequireUserinfoTokenPrincipal : IOpenIddictClientHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)

19
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreConfiguration.cs

@ -18,10 +18,7 @@ public sealed class OpenIddictServerAspNetCoreConfiguration : IConfigureOptions<
IPostConfigureOptions<AuthenticationOptions>,
IPostConfigureOptions<OpenIddictServerAspNetCoreOptions>
{
/// <summary>
/// Registers the OpenIddict server handler in the global authentication options.
/// </summary>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void Configure(AuthenticationOptions options)
{
if (options is null)
@ -40,6 +37,7 @@ public sealed class OpenIddictServerAspNetCoreConfiguration : IConfigureOptions<
OpenIddictServerAspNetCoreDefaults.AuthenticationScheme, displayName: null);
}
/// <inheritdoc/>
public void Configure(OpenIddictServerOptions options)
{
if (options is null)
@ -51,11 +49,7 @@ public sealed class OpenIddictServerAspNetCoreConfiguration : IConfigureOptions<
options.Handlers.AddRange(OpenIddictServerAspNetCoreHandlers.DefaultHandlers);
}
/// <summary>
/// Ensures that the authentication configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The name of the options instance to configure, if applicable.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, AuthenticationOptions options)
{
if (options is null)
@ -106,12 +100,7 @@ public sealed class OpenIddictServerAspNetCoreConfiguration : IConfigureOptions<
}
}
/// <summary>
/// Populates the default OpenIddict server ASP.NET Core options and
/// ensures that the configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The name of the options instance to configure, if applicable.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictServerAspNetCoreOptions options)
{
if (options is null)

11
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlerFilters.cs

@ -26,6 +26,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
public RequireAuthorizationRequestCachingEnabled(IOptionsMonitor<OpenIddictServerAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -48,6 +49,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
public RequireAuthorizationEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictServerAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -69,6 +71,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
public RequireErrorPassthroughEnabled(IOptionsMonitor<OpenIddictServerAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -85,6 +88,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
/// </summary>
public sealed class RequireHttpRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -106,6 +110,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
public RequireLogoutRequestCachingEnabled(IOptionsMonitor<OpenIddictServerAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -128,6 +133,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
public RequireLogoutEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictServerAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -149,6 +155,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
public RequireStatusCodePagesIntegrationEnabled(IOptionsMonitor<OpenIddictServerAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -170,6 +177,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
public RequireTransportSecurityRequirementEnabled(IOptionsMonitor<OpenIddictServerAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -192,6 +200,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
public RequireTokenEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictServerAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -214,6 +223,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
public RequireUserinfoEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictServerAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -236,6 +246,7 @@ public static class OpenIddictServerAspNetCoreHandlerFilters
public RequireVerificationEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictServerAspNetCoreOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)

8
src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionConfiguration.cs

@ -26,6 +26,7 @@ public sealed class OpenIddictServerDataProtectionConfiguration : IConfigureOpti
public OpenIddictServerDataProtectionConfiguration(IDataProtectionProvider dataProtectionProvider)
=> _dataProtectionProvider = dataProtectionProvider;
/// <inheritdoc/>
public void Configure(OpenIddictServerOptions options)
{
if (options is null)
@ -37,12 +38,7 @@ public sealed class OpenIddictServerDataProtectionConfiguration : IConfigureOpti
options.Handlers.AddRange(OpenIddictServerDataProtectionHandlers.DefaultHandlers);
}
/// <summary>
/// Populates the default OpenIddict ASP.NET Core Data Protection server options
/// and ensures that the configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The name of the options instance to configure, if applicable.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictServerDataProtectionOptions options)
{
if (options is null)

1
src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionHandlerFilters.cs

@ -17,6 +17,7 @@ public static class OpenIddictServerDataProtectionHandlerFilters
/// </summary>
public sealed class RequireDataProtectionTokenFormat : IOpenIddictServerHandlerFilter<GenerateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(GenerateTokenContext context)
{
if (context is null)

2
src/OpenIddict.Server.Owin/OpenIddictServerOwinConfiguration.cs

@ -16,6 +16,7 @@ namespace OpenIddict.Server.Owin;
public sealed class OpenIddictServerOwinConfiguration : IConfigureOptions<OpenIddictServerOptions>,
IPostConfigureOptions<OpenIddictServerOwinOptions>
{
/// <inheritdoc/>
public void Configure(OpenIddictServerOptions options)
{
if (options is null)
@ -27,6 +28,7 @@ public sealed class OpenIddictServerOwinConfiguration : IConfigureOptions<OpenId
options.Handlers.AddRange(OpenIddictServerOwinHandlers.DefaultHandlers);
}
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictServerOwinOptions options)
{
if (options is null)

10
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlerFilters.cs

@ -24,6 +24,7 @@ public static class OpenIddictServerOwinHandlerFilters
public RequireAuthorizationRequestCachingEnabled(IOptionsMonitor<OpenIddictServerOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -46,6 +47,7 @@ public static class OpenIddictServerOwinHandlerFilters
public RequireAuthorizationEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictServerOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -67,6 +69,7 @@ public static class OpenIddictServerOwinHandlerFilters
public RequireErrorPassthroughEnabled(IOptionsMonitor<OpenIddictServerOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -88,6 +91,7 @@ public static class OpenIddictServerOwinHandlerFilters
public RequireLogoutRequestCachingEnabled(IOptionsMonitor<OpenIddictServerOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -110,6 +114,7 @@ public static class OpenIddictServerOwinHandlerFilters
public RequireLogoutEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictServerOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -126,6 +131,7 @@ public static class OpenIddictServerOwinHandlerFilters
/// </summary>
public sealed class RequireOwinRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -147,6 +153,7 @@ public static class OpenIddictServerOwinHandlerFilters
public RequireTransportSecurityRequirementEnabled(IOptionsMonitor<OpenIddictServerOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -169,6 +176,7 @@ public static class OpenIddictServerOwinHandlerFilters
public RequireTokenEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictServerOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -191,6 +199,7 @@ public static class OpenIddictServerOwinHandlerFilters
public RequireUserinfoEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictServerOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -213,6 +222,7 @@ public static class OpenIddictServerOwinHandlerFilters
public RequireVerificationEndpointPassthroughEnabled(IOptionsMonitor<OpenIddictServerOwinOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)

12
src/OpenIddict.Server/IOpenIddictServerDispatcher.cs

@ -8,8 +8,20 @@ using System.ComponentModel;
namespace OpenIddict.Server;
/// <summary>
/// Represents a service able to dispatch events to a list of handlers.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Advanced)]
public interface IOpenIddictServerDispatcher
{
/// <summary>
/// Dispatches an event of the specified type to the handlers that
/// implement <see cref="IOpenIddictServerHandler{TContext}"/>.
/// </summary>
/// <typeparam name="TContext">The type of the context associated with the event to dispatch.</typeparam>
/// <param name="context">The context associated with the event to dispatch.</param>
/// <returns>
/// A <see cref="ValueTask"/> that can be used to monitor the asynchronous operation.
/// </returns>
ValueTask DispatchAsync<TContext>(TContext context) where TContext : BaseContext;
}

11
src/OpenIddict.Server/IOpenIddictServerFactory.cs

@ -8,8 +8,19 @@ using System.ComponentModel;
namespace OpenIddict.Server;
/// <summary>
/// Represents a service responsible for creating transactions.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public interface IOpenIddictServerFactory
{
/// <summary>
/// Creates a new <see cref="OpenIddictServerTransaction"/> that is used as a
/// way to store per-request data needed to process the requested operation.
/// </summary>
/// <returns>
/// A <see cref="ValueTask"/> that can be used to monitor the asynchronous
/// operation, whose result returns the created transaction.
/// </returns>
ValueTask<OpenIddictServerTransaction> CreateTransactionAsync();
}

14
src/OpenIddict.Server/IOpenIddictServerHandlerFilter.cs

@ -6,7 +6,21 @@
namespace OpenIddict.Server;
/// <summary>
/// Represents a handler filter responsible for determining whether a
/// handler should process an event depending on the specified context.
/// </summary>
/// <typeparam name="TContext">The type of the context associated with events filtered by this instance.</typeparam>
public interface IOpenIddictServerHandlerFilter<in TContext> where TContext : BaseContext
{
/// <summary>
/// Determines whether the handler referencing this filter instance should
/// be instantiated and process the event, based on the specified context.
/// </summary>
/// <param name="context">The context associated with the event to process.</param>
/// <returns>
/// A <see cref="ValueTask"/> that can be used to monitor the asynchronous operation,
/// whose boolean result determines whether the handler will be invoked or not.
/// </returns>
ValueTask<bool> IsActiveAsync(TContext context);
}

7
src/OpenIddict.Server/OpenIddictServerConfiguration.cs

@ -18,12 +18,7 @@ namespace OpenIddict.Server;
[EditorBrowsable(EditorBrowsableState.Advanced)]
public sealed class OpenIddictServerConfiguration : IPostConfigureOptions<OpenIddictServerOptions>
{
/// <summary>
/// Populates the default OpenIddict server options and ensures
/// that the configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The name of the options instance to configure, if applicable.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictServerOptions options)
{
if (options is null)

4
src/OpenIddict.Server/OpenIddictServerDispatcher.cs

@ -10,6 +10,9 @@ using Microsoft.Extensions.Options;
namespace OpenIddict.Server;
/// <summary>
/// Represents a service able to dispatch events to a list of handlers.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Advanced)]
public sealed class OpenIddictServerDispatcher : IOpenIddictServerDispatcher
{
@ -30,6 +33,7 @@ public sealed class OpenIddictServerDispatcher : IOpenIddictServerDispatcher
_provider = provider ?? throw new ArgumentNullException(nameof(provider));
}
/// <inheritdoc/>
public async ValueTask DispatchAsync<TContext>(TContext context) where TContext : BaseContext
{
if (context is null)

4
src/OpenIddict.Server/OpenIddictServerFactory.cs

@ -10,6 +10,9 @@ using Microsoft.Extensions.Options;
namespace OpenIddict.Server;
/// <summary>
/// Represents a service responsible for creating transactions.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public sealed class OpenIddictServerFactory : IOpenIddictServerFactory
{
@ -27,6 +30,7 @@ public sealed class OpenIddictServerFactory : IOpenIddictServerFactory
_options = options ?? throw new ArgumentNullException(nameof(options));
}
/// <inheritdoc/>
public ValueTask<OpenIddictServerTransaction> CreateTransactionAsync()
=> new(new OpenIddictServerTransaction
{

42
src/OpenIddict.Server/OpenIddictServerHandlerFilters.cs

@ -16,6 +16,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireAccessTokenGenerated : IOpenIddictServerHandlerFilter<ProcessSignInContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessSignInContext context)
{
if (context is null)
@ -32,6 +33,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireAccessTokenValidated : IOpenIddictServerHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -48,6 +50,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireAuthorizationCodeGenerated : IOpenIddictServerHandlerFilter<ProcessSignInContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessSignInContext context)
{
if (context is null)
@ -64,6 +67,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireAuthorizationCodeValidated : IOpenIddictServerHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -80,6 +84,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireAuthorizationIdResolved : IOpenIddictServerHandlerFilter<ValidateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ValidateTokenContext context)
{
if (context is null)
@ -96,6 +101,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireAuthorizationRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -112,6 +118,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireAuthorizationStorageEnabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -128,6 +135,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireClientIdParameter : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -144,6 +152,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireConfigurationRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -160,6 +169,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireCryptographyRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -176,6 +186,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireDegradedModeDisabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -192,6 +203,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireDeviceCodeGenerated : IOpenIddictServerHandlerFilter<ProcessSignInContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessSignInContext context)
{
if (context is null)
@ -208,6 +220,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireDeviceCodeValidated : IOpenIddictServerHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -224,6 +237,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireDeviceRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -240,6 +254,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireEndpointPermissionsEnabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -256,6 +271,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireGenericTokenValidated : IOpenIddictServerHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -272,6 +288,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireGrantTypePermissionsEnabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -288,6 +305,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireIdentityTokenGenerated : IOpenIddictServerHandlerFilter<ProcessSignInContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessSignInContext context)
{
if (context is null)
@ -304,6 +322,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireIdentityTokenValidated : IOpenIddictServerHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -320,6 +339,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireIntrospectionRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -336,6 +356,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireJsonWebTokenFormat : IOpenIddictServerHandlerFilter<GenerateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(GenerateTokenContext context)
{
if (context is null)
@ -352,6 +373,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireLogoutRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -368,6 +390,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequirePostLogoutRedirectUriParameter : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -384,6 +407,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireReferenceAccessTokensEnabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -400,6 +424,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireReferenceRefreshTokensEnabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -416,6 +441,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireRefreshTokenGenerated : IOpenIddictServerHandlerFilter<ProcessSignInContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessSignInContext context)
{
if (context is null)
@ -432,6 +458,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireRefreshTokenValidated : IOpenIddictServerHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -448,6 +475,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireResponseTypePermissionsEnabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -464,6 +492,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireRevocationRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -480,6 +509,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireScopePermissionsEnabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -496,6 +526,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireScopeValidationEnabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -512,6 +543,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireSlidingRefreshTokenExpirationEnabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -528,6 +560,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireTokenIdResolved : IOpenIddictServerHandlerFilter<ValidateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ValidateTokenContext context)
{
if (context is null)
@ -544,6 +577,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireTokenEntryCreated : IOpenIddictServerHandlerFilter<GenerateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(GenerateTokenContext context)
{
if (context is null)
@ -560,6 +594,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireTokenLifetimeValidationEnabled : IOpenIddictServerHandlerFilter<ValidateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ValidateTokenContext context)
{
if (context is null)
@ -576,6 +611,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireTokenPayloadPersisted : IOpenIddictServerHandlerFilter<GenerateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(GenerateTokenContext context)
{
if (context is null)
@ -592,6 +628,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireTokenRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -608,6 +645,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireTokenStorageEnabled : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -624,6 +662,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireUserCodeGenerated : IOpenIddictServerHandlerFilter<ProcessSignInContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessSignInContext context)
{
if (context is null)
@ -640,6 +679,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireUserCodeValidated : IOpenIddictServerHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -656,6 +696,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireUserinfoRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -672,6 +713,7 @@ public static class OpenIddictServerHandlerFilters
/// </summary>
public sealed class RequireVerificationRequest : IOpenIddictServerHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)

12
src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreConfiguration.cs

@ -17,10 +17,7 @@ public sealed class OpenIddictValidationAspNetCoreConfiguration : IConfigureOpti
IConfigureOptions<OpenIddictValidationOptions>,
IPostConfigureOptions<AuthenticationOptions>
{
/// <summary>
/// Registers the OpenIddict validation handler in the global authentication options.
/// </summary>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void Configure(AuthenticationOptions options)
{
if (options is null)
@ -39,6 +36,7 @@ public sealed class OpenIddictValidationAspNetCoreConfiguration : IConfigureOpti
OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme, displayName: null);
}
/// <inheritdoc/>
public void Configure(OpenIddictValidationOptions options)
{
if (options is null)
@ -50,11 +48,7 @@ public sealed class OpenIddictValidationAspNetCoreConfiguration : IConfigureOpti
options.Handlers.AddRange(OpenIddictValidationAspNetCoreHandlers.DefaultHandlers);
}
/// <summary>
/// Ensures that the authentication configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The name of the options instance to configure, if applicable.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, AuthenticationOptions options)
{
if (options is null)

1
src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlerFilters.cs

@ -20,6 +20,7 @@ public static class OpenIddictValidationAspNetCoreHandlerFilters
/// </summary>
public sealed class RequireHttpRequest : IOpenIddictValidationHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)

8
src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionConfiguration.cs

@ -26,6 +26,7 @@ public sealed class OpenIddictValidationDataProtectionConfiguration : IConfigure
public OpenIddictValidationDataProtectionConfiguration(IDataProtectionProvider dataProtectionProvider)
=> _dataProtectionProvider = dataProtectionProvider;
/// <inheritdoc/>
public void Configure(OpenIddictValidationOptions options)
{
if (options is null)
@ -37,12 +38,7 @@ public sealed class OpenIddictValidationDataProtectionConfiguration : IConfigure
options.Handlers.AddRange(OpenIddictValidationDataProtectionHandlers.DefaultHandlers);
}
/// <summary>
/// Populates the default OpenIddict ASP.NET Core Data Protection validation options
/// and ensures that the configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The name of the options instance to configure, if applicable.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictValidationDataProtectionOptions options)
{
if (options is null)

1
src/OpenIddict.Validation.Owin/OpenIddictValidationOwinConfiguration.cs

@ -15,6 +15,7 @@ namespace OpenIddict.Validation.Owin;
[EditorBrowsable(EditorBrowsableState.Advanced)]
public sealed class OpenIddictValidationOwinConfiguration : IConfigureOptions<OpenIddictValidationOptions>
{
/// <inheritdoc/>
public void Configure(OpenIddictValidationOptions options)
{
if (options is null)

1
src/OpenIddict.Validation.Owin/OpenIddictValidationOwinHandlerFilters.cs

@ -18,6 +18,7 @@ public static class OpenIddictValidationOwinHandlerFilters
/// </summary>
public sealed class RequireOwinRequest : IOpenIddictValidationHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)

13
src/OpenIddict.Validation.ServerIntegration/OpenIddictValidationServerIntegrationConfiguration.cs

@ -26,11 +26,7 @@ public sealed class OpenIddictValidationServerIntegrationConfiguration : IConfig
public OpenIddictValidationServerIntegrationConfiguration(IOptionsMonitor<OpenIddictServerOptions> options)
=> _options = options ?? throw new ArgumentNullException(nameof(options));
/// <summary>
/// Populates the default OpenIddict validation/server integration options
/// and ensures that the configuration is in a consistent and valid state.
/// </summary>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void Configure(OpenIddictValidationOptions options)
{
if (options is null)
@ -58,12 +54,7 @@ public sealed class OpenIddictValidationServerIntegrationConfiguration : IConfig
options.EnableTokenEntryValidation = _options.CurrentValue.UseReferenceAccessTokens;
}
/// <summary>
/// Populates the default OpenIddict validation/server integration options
/// and ensures that the configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The name of the options instance to configure, if applicable.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictValidationOptions options)
{
if (options is null)

9
src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpConfiguration.cs

@ -20,11 +20,16 @@ public sealed class OpenIddictValidationSystemNetHttpConfiguration : IConfigureO
{
#if !SUPPORTS_SERVICE_PROVIDER_IN_HTTP_MESSAGE_HANDLER_BUILDER
private readonly IServiceProvider _provider;
/// <summary>
/// Creates a new instance of the <see cref="OpenIddictValidationSystemNetHttpConfiguration"/> class.
/// </summary>
/// <param name="provider">The service provider.</param>
public OpenIddictValidationSystemNetHttpConfiguration(IServiceProvider provider)
=> _provider = provider ?? throw new ArgumentNullException(nameof(provider));
#endif
/// <inheritdoc/>
public void Configure(OpenIddictValidationOptions options)
{
if (options is null)
@ -36,8 +41,10 @@ public sealed class OpenIddictValidationSystemNetHttpConfiguration : IConfigureO
options.Handlers.AddRange(OpenIddictValidationSystemNetHttpHandlers.DefaultHandlers);
}
/// <inheritdoc/>
public void Configure(HttpClientFactoryOptions options) => Configure(Options.DefaultName, options);
/// <inheritdoc/>
public void Configure(string? name, HttpClientFactoryOptions options)
{
if (options is null)

1
src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlerFilters.cs

@ -16,6 +16,7 @@ public static class OpenIddictValidationSystemNetHttpHandlerFilters
/// </summary>
public sealed class RequireHttpMetadataUri : IOpenIddictValidationHandlerFilter<BaseExternalContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseExternalContext context)
{
if (context is null)

12
src/OpenIddict.Validation/IOpenIddictValidationDispatcher.cs

@ -8,8 +8,20 @@ using System.ComponentModel;
namespace OpenIddict.Validation;
/// <summary>
/// Represents a service able to dispatch events to a list of handlers.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Advanced)]
public interface IOpenIddictValidationDispatcher
{
/// <summary>
/// Dispatches an event of the specified type to the handlers that
/// implement <see cref="IOpenIddictValidationHandler{TContext}"/>.
/// </summary>
/// <typeparam name="TContext">The type of the context associated with the event to dispatch.</typeparam>
/// <param name="context">The context associated with the event to dispatch.</param>
/// <returns>
/// A <see cref="ValueTask"/> that can be used to monitor the asynchronous operation.
/// </returns>
ValueTask DispatchAsync<TContext>(TContext context) where TContext : BaseContext;
}

11
src/OpenIddict.Validation/IOpenIddictValidationFactory.cs

@ -8,8 +8,19 @@ using System.ComponentModel;
namespace OpenIddict.Validation;
/// <summary>
/// Represents a service responsible for creating transactions.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public interface IOpenIddictValidationFactory
{
/// <summary>
/// Creates a new <see cref="OpenIddictValidationTransaction"/> that is used as a
/// way to store per-request data needed to process the requested operation.
/// </summary>
/// <returns>
/// A <see cref="ValueTask"/> that can be used to monitor the asynchronous
/// operation, whose result returns the created transaction.
/// </returns>
ValueTask<OpenIddictValidationTransaction> CreateTransactionAsync();
}

15
src/OpenIddict.Validation/IOpenIddictValidationHandlerFilter.cs

@ -5,8 +5,21 @@
*/
namespace OpenIddict.Validation;
/// <summary>
/// Represents a handler filter responsible for determining whether a
/// handler should process an event depending on the specified context.
/// </summary>
/// <typeparam name="TContext">The type of the context associated with events filtered by this instance.</typeparam>
public interface IOpenIddictValidationHandlerFilter<in TContext> where TContext : BaseContext
{
/// <summary>
/// Determines whether the handler referencing this filter instance should
/// be instantiated and process the event, based on the specified context.
/// </summary>
/// <param name="context">The context associated with the event to process.</param>
/// <returns>
/// A <see cref="ValueTask"/> that can be used to monitor the asynchronous operation,
/// whose boolean result determines whether the handler will be invoked or not.
/// </returns>
ValueTask<bool> IsActiveAsync(TContext context);
}

11
src/OpenIddict.Validation/OpenIddictValidationConfiguration.cs

@ -18,15 +18,14 @@ public sealed class OpenIddictValidationConfiguration : IPostConfigureOptions<Op
{
private readonly OpenIddictValidationService _service;
/// <summary>
/// Creates a new instance of the <see cref="OpenIddictValidationConfiguration"/> class.
/// </summary>
/// <param name="service">The validation service.</param>
public OpenIddictValidationConfiguration(OpenIddictValidationService service)
=> _service = service ?? throw new ArgumentNullException(nameof(service));
/// <summary>
/// Populates the default OpenIddict validation options and ensures
/// that the configuration is in a consistent and valid state.
/// </summary>
/// <param name="name">The name of the options instance to configure, if applicable.</param>
/// <param name="options">The options instance to initialize.</param>
/// <inheritdoc/>
public void PostConfigure(string? name, OpenIddictValidationOptions options)
{
if (options is null)

4
src/OpenIddict.Validation/OpenIddictValidationDispatcher.cs

@ -10,6 +10,9 @@ using Microsoft.Extensions.Options;
namespace OpenIddict.Validation;
/// <summary>
/// Represents a service able to dispatch events to a list of handlers.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Advanced)]
public sealed class OpenIddictValidationDispatcher : IOpenIddictValidationDispatcher
{
@ -30,6 +33,7 @@ public sealed class OpenIddictValidationDispatcher : IOpenIddictValidationDispat
_provider = provider ?? throw new ArgumentNullException(nameof(provider));
}
/// <inheritdoc/>
public async ValueTask DispatchAsync<TContext>(TContext context) where TContext : BaseContext
{
if (context is null)

4
src/OpenIddict.Validation/OpenIddictValidationFactory.cs

@ -10,6 +10,9 @@ using Microsoft.Extensions.Options;
namespace OpenIddict.Validation;
/// <summary>
/// Represents a service responsible for creating transactions.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public sealed class OpenIddictValidationFactory : IOpenIddictValidationFactory
{
@ -27,6 +30,7 @@ public sealed class OpenIddictValidationFactory : IOpenIddictValidationFactory
_options = options ?? throw new ArgumentNullException(nameof(options));
}
/// <inheritdoc/>
public ValueTask<OpenIddictValidationTransaction> CreateTransactionAsync()
=> new(new OpenIddictValidationTransaction
{

8
src/OpenIddict.Validation/OpenIddictValidationHandlerFilters.cs

@ -16,6 +16,7 @@ public static class OpenIddictValidationHandlerFilters
/// </summary>
public sealed class RequireAccessTokenExtracted : IOpenIddictValidationHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -32,6 +33,7 @@ public static class OpenIddictValidationHandlerFilters
/// </summary>
public sealed class RequireAccessTokenValidated : IOpenIddictValidationHandlerFilter<ProcessAuthenticationContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ProcessAuthenticationContext context)
{
if (context is null)
@ -48,6 +50,7 @@ public static class OpenIddictValidationHandlerFilters
/// </summary>
public sealed class RequireAuthorizationEntryValidationEnabled : IOpenIddictValidationHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -64,6 +67,7 @@ public static class OpenIddictValidationHandlerFilters
/// </summary>
public sealed class RequireAuthorizationIdResolved : IOpenIddictValidationHandlerFilter<ValidateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ValidateTokenContext context)
{
if (context is null)
@ -80,6 +84,7 @@ public static class OpenIddictValidationHandlerFilters
/// </summary>
public sealed class RequireLocalValidation : IOpenIddictValidationHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -96,6 +101,7 @@ public static class OpenIddictValidationHandlerFilters
/// </summary>
public sealed class RequireIntrospectionValidation : IOpenIddictValidationHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)
@ -112,6 +118,7 @@ public static class OpenIddictValidationHandlerFilters
/// </summary>
public sealed class RequireTokenIdResolved : IOpenIddictValidationHandlerFilter<ValidateTokenContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(ValidateTokenContext context)
{
if (context is null)
@ -128,6 +135,7 @@ public static class OpenIddictValidationHandlerFilters
/// </summary>
public sealed class RequireTokenEntryValidationEnabled : IOpenIddictValidationHandlerFilter<BaseContext>
{
/// <inheritdoc/>
public ValueTask<bool> IsActiveAsync(BaseContext context)
{
if (context is null)

Loading…
Cancel
Save