diff --git a/Directory.Build.targets b/Directory.Build.targets index 556ef49fd..b9cbaca27 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -129,6 +129,7 @@ + $(DefineConstants);SUPPORTS_APPLICATION_CONFIGURATION_INITIALIZATION $(DefineConstants);SUPPORTS_DIRECT_JSON_ELEMENT_SERIALIZATION $(DefineConstants);SUPPORTS_JSON_NODES $(DefineConstants);SUPPORTS_ONE_SHOT_RANDOM_NUMBER_GENERATOR_METHODS diff --git a/sandbox/OpenIddict.Sandbox.WinForms.Client/App.config b/sandbox/OpenIddict.Sandbox.WinForms.Client/App.config new file mode 100644 index 000000000..451442db8 --- /dev/null +++ b/sandbox/OpenIddict.Sandbox.WinForms.Client/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/sandbox/OpenIddict.Sandbox.WinForms.Client/OpenIddict.Sandbox.WinForms.Client.csproj b/sandbox/OpenIddict.Sandbox.WinForms.Client/OpenIddict.Sandbox.WinForms.Client.csproj index 2c943f59d..b537ba0d2 100644 --- a/sandbox/OpenIddict.Sandbox.WinForms.Client/OpenIddict.Sandbox.WinForms.Client.csproj +++ b/sandbox/OpenIddict.Sandbox.WinForms.Client/OpenIddict.Sandbox.WinForms.Client.csproj @@ -5,6 +5,8 @@ net48 $(TargetFrameworks);net8.0-windows7.0 true + app.manifest + PerMonitorV2 diff --git a/sandbox/OpenIddict.Sandbox.WinForms.Client/Program.cs b/sandbox/OpenIddict.Sandbox.WinForms.Client/Program.cs index 82010f432..0b8ca44f3 100644 --- a/sandbox/OpenIddict.Sandbox.WinForms.Client/Program.cs +++ b/sandbox/OpenIddict.Sandbox.WinForms.Client/Program.cs @@ -7,6 +7,10 @@ using OpenIddict.Sandbox.WinForms.Client; using static OpenIddict.Abstractions.OpenIddictConstants; +#if SUPPORTS_APPLICATION_CONFIGURATION_INITIALIZATION +ApplicationConfiguration.Initialize(); +#endif + var host = new HostBuilder() // Note: applications for which a single instance is preferred can reference // the Dapplo.Microsoft.Extensions.Hosting.AppServices package and call this diff --git a/sandbox/OpenIddict.Sandbox.WinForms.Client/app.manifest b/sandbox/OpenIddict.Sandbox.WinForms.Client/app.manifest new file mode 100644 index 000000000..7936d9418 --- /dev/null +++ b/sandbox/OpenIddict.Sandbox.WinForms.Client/app.manifest @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHttpListener.cs b/src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHttpListener.cs index 72804afd4..25ec5949b 100644 --- a/src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHttpListener.cs +++ b/src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHttpListener.cs @@ -92,15 +92,15 @@ await Task.Run(cancellationToken: stoppingToken, function: async () => } // Ignore exceptions indicating that the host is shutting down and return immediately. - catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested) + catch (OperationCanceledException exception) when (stoppingToken.IsCancellationRequested) { - _source.SetResult(result: null); + _source.TrySetException(exception); return; } catch (Exception exception) when (!OpenIddictHelpers.IsFatal(exception)) { - _source.SetResult(result: null); + _source.TrySetException(exception); throw; } diff --git a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpExtensions.cs b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpExtensions.cs index 5fd499fe1..ca953fd96 100644 --- a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpExtensions.cs +++ b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpExtensions.cs @@ -37,7 +37,10 @@ public static OpenIddictClientSystemNetHttpBuilder UseSystemNetHttp(this OpenIdd builder.Services.TryAdd(OpenIddictClientSystemNetHttpHandlers.DefaultHandlers.Select(descriptor => descriptor.ServiceDescriptor)); // Register the built-in filters used by the default OpenIddict System.Net.Http event handlers. +#pragma warning disable CS0618 builder.Services.TryAddSingleton(); +#pragma warning restore CS0618 + builder.Services.TryAddSingleton(); // Note: TryAddEnumerable() is used here to ensure the initializers are registered only once. builder.Services.TryAddEnumerable( diff --git a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlerFilters.cs b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlerFilters.cs index 1dc74db39..e58000011 100644 --- a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlerFilters.cs +++ b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlerFilters.cs @@ -12,8 +12,9 @@ namespace OpenIddict.Client.SystemNetHttp; public static class OpenIddictClientSystemNetHttpHandlerFilters { /// - /// Represents a filter that excludes the associated handlers if the metadata URI of the issuer is not available. + /// Represents a filter that excludes the associated handlers if the URI is not an HTTP or HTTPS address. /// + [Obsolete("This filter is obsolete and will be removed in a future version.")] public sealed class RequireHttpMetadataUri : IOpenIddictClientHandlerFilter { /// @@ -25,7 +26,26 @@ public ValueTask IsActiveAsync(BaseExternalContext context) } return new( - string.Equals(context.RemoteUri?.Scheme, Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || + string.Equals(context.RemoteUri?.Scheme, Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || + string.Equals(context.RemoteUri?.Scheme, Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)); + } + } + + /// + /// Represents a filter that excludes the associated handlers if the URI is not an HTTP or HTTPS address. + /// + public sealed class RequireHttpUri : IOpenIddictClientHandlerFilter + { + /// + public ValueTask IsActiveAsync(BaseExternalContext context) + { + if (context is null) + { + throw new ArgumentNullException(nameof(context)); + } + + return new( + string.Equals(context.RemoteUri?.Scheme, Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || string.Equals(context.RemoteUri?.Scheme, Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)); } } diff --git a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Device.cs b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Device.cs index 5e84a7114..b0ef42f77 100644 --- a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Device.cs +++ b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Device.cs @@ -51,7 +51,7 @@ public sealed class AttachBasicAuthenticationCredentials : IOpenIddictClientHand /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachHttpParameters.Descriptor.Order - 500) .SetType(OpenIddictClientHandlerType.BuiltIn) diff --git a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Exchange.cs b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Exchange.cs index 1c3465d08..11f54ce52 100644 --- a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Exchange.cs +++ b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Exchange.cs @@ -51,7 +51,7 @@ public sealed class AttachBasicAuthenticationCredentials : IOpenIddictClientHand /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachHttpParameters.Descriptor.Order - 500) .SetType(OpenIddictClientHandlerType.BuiltIn) diff --git a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Introspection.cs b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Introspection.cs index 34e8fd747..fd4a390d2 100644 --- a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Introspection.cs +++ b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Introspection.cs @@ -51,7 +51,7 @@ public sealed class AttachBasicAuthenticationCredentials : IOpenIddictClientHand /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachHttpParameters.Descriptor.Order - 500) .SetType(OpenIddictClientHandlerType.BuiltIn) diff --git a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Revocation.cs b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Revocation.cs index 977c9c08e..d8fa2dc2d 100644 --- a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Revocation.cs +++ b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Revocation.cs @@ -52,7 +52,7 @@ public sealed class AttachBasicAuthenticationCredentials : IOpenIddictClientHand /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachHttpParameters.Descriptor.Order - 500) .SetType(OpenIddictClientHandlerType.BuiltIn) diff --git a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Userinfo.cs b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Userinfo.cs index 86ca4ac68..b328a7774 100644 --- a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Userinfo.cs +++ b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Userinfo.cs @@ -52,7 +52,7 @@ public sealed class AttachBearerAccessToken : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachHttpParameters.Descriptor.Order - 500) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -93,7 +93,7 @@ public sealed class ExtractUserinfoTokenHttpResponse : IOpenIddictClientHandler< /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(ExtractJsonHttpResponse.Descriptor.Order - 500) .SetType(OpenIddictClientHandlerType.BuiltIn) diff --git a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.cs b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.cs index 57471db9f..8e6a3d7ae 100644 --- a/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.cs +++ b/src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.cs @@ -46,7 +46,7 @@ public CreateHttpClient(IHttpClientFactory factory) /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(int.MinValue + 100_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -81,7 +81,7 @@ public sealed class PrepareGetHttpRequest : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(CreateHttpClient.Descriptor.Order + 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -113,7 +113,7 @@ public sealed class PreparePostHttpRequest : IOpenIddictClientHandler< /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(PrepareGetHttpRequest.Descriptor.Order + 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -145,7 +145,7 @@ public sealed class AttachHttpVersion : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(PreparePostHttpRequest.Descriptor.Order + 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -193,7 +193,7 @@ public sealed class AttachJsonAcceptHeaders : IOpenIddictClientHandler /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(AttachHttpVersion.Descriptor.Order + 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -238,7 +238,7 @@ public AttachUserAgentHeader(IOptionsMonitor public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(AttachJsonAcceptHeaders.Descriptor.Order + 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -292,7 +292,7 @@ public AttachFromHeader(IOptionsMonitor op /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(AttachUserAgentHeader.Descriptor.Order + 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -328,7 +328,7 @@ public sealed class AttachHttpParameters : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(int.MaxValue - 100_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -388,7 +388,7 @@ public sealed class SendHttpRequest : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(DecompressResponseContent.Descriptor.Order - 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -452,7 +452,7 @@ public sealed class DisposeHttpRequest : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(int.MaxValue - 100_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -490,7 +490,7 @@ public sealed class DecompressResponseContent : IOpenIddictClientHandl /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(ExtractJsonHttpResponse.Descriptor.Order - 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -636,7 +636,7 @@ public sealed class ExtractJsonHttpResponse : IOpenIddictClientHandler /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(ExtractWwwAuthenticateHeader.Descriptor.Order - 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -715,7 +715,7 @@ public sealed class ExtractWwwAuthenticateHeader : IOpenIddictClientHa /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(ExtractEmptyHttpResponse.Descriptor.Order - 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -798,7 +798,7 @@ public sealed class ExtractEmptyHttpResponse : IOpenIddictClientHandle /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(ValidateHttpResponse.Descriptor.Order - 1_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -844,7 +844,7 @@ public sealed class ValidateHttpResponse : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(DisposeHttpResponse.Descriptor.Order - 50_000) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -914,7 +914,7 @@ public sealed class DisposeHttpResponse : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(int.MaxValue - 100_000) .SetType(OpenIddictClientHandlerType.BuiltIn) diff --git a/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Exchange.cs b/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Exchange.cs index ea469cb75..73e364417 100644 --- a/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Exchange.cs +++ b/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Exchange.cs @@ -129,7 +129,7 @@ public sealed class AttachNonStandardBasicAuthenticationCredentials : IOpenIddic /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachBasicAuthenticationCredentials.Descriptor.Order - 500) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -232,7 +232,7 @@ public sealed class AttachNonStandardRequestHeaders : IOpenIddictClientHandler

public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachUserAgentHeader.Descriptor.Order + 250) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -276,7 +276,7 @@ public sealed class AttachNonStandardQueryStringParameters : IOpenIddictClientHa /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachHttpParameters.Descriptor.Order + 500) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -323,7 +323,7 @@ public sealed class AttachNonStandardRequestPayload : IOpenIddictClientHandler

public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachHttpParameters.Descriptor.Order + 500) .SetType(OpenIddictClientHandlerType.BuiltIn) diff --git a/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Revocation.cs b/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Revocation.cs index 4489eb623..3d22205f8 100644 --- a/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Revocation.cs +++ b/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Revocation.cs @@ -43,7 +43,7 @@ public sealed class AttachNonStandardBasicAuthenticationCredentials : IOpenIddic /// public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachBasicAuthenticationCredentials.Descriptor.Order - 500) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -106,6 +106,7 @@ public sealed class NormalizeContentType : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() + .AddFilter() .UseSingletonHandler() .SetOrder(ExtractJsonHttpResponse.Descriptor.Order - 500) .SetType(OpenIddictClientHandlerType.BuiltIn) diff --git a/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs b/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs index f599a7b2b..ddc67116c 100644 --- a/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs +++ b/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs @@ -49,7 +49,7 @@ public sealed class OverrideHttpMethod : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(PreparePostHttpRequest.Descriptor.Order + 250) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -96,7 +96,7 @@ public sealed class AttachRequestHeaders : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachUserAgentHeader.Descriptor.Order + 250) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -151,7 +151,7 @@ public sealed class AttachAccessTokenParameter : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachBearerAccessToken.Descriptor.Order + 250) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -250,7 +250,7 @@ public sealed class AttachNonStandardRequestPayload : IOpenIddictClientHandler

public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachHttpParameters.Descriptor.Order + 500) .SetType(OpenIddictClientHandlerType.BuiltIn) @@ -299,6 +299,7 @@ public sealed class NormalizeContentType : IOpenIddictClientHandler public static OpenIddictClientHandlerDescriptor Descriptor { get; } = OpenIddictClientHandlerDescriptor.CreateBuilder() + .AddFilter() .UseSingletonHandler() .SetOrder(ExtractUserinfoTokenHttpResponse.Descriptor.Order - 250) .SetType(OpenIddictClientHandlerType.BuiltIn) diff --git a/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpExtensions.cs b/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpExtensions.cs index 73502293f..cc1e2411f 100644 --- a/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpExtensions.cs +++ b/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpExtensions.cs @@ -37,7 +37,10 @@ public static OpenIddictValidationSystemNetHttpBuilder UseSystemNetHttp(this Ope builder.Services.TryAdd(OpenIddictValidationSystemNetHttpHandlers.DefaultHandlers.Select(descriptor => descriptor.ServiceDescriptor)); // Register the built-in filters used by the default OpenIddict System.Net.Http event handlers. +#pragma warning disable CS0618 builder.Services.TryAddSingleton(); +#pragma warning restore CS0618 + builder.Services.TryAddSingleton(); // Note: TryAddEnumerable() is used here to ensure the initializers are registered only once. builder.Services.TryAddEnumerable( diff --git a/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlerFilters.cs b/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlerFilters.cs index e7ded20d4..f7760ef33 100644 --- a/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlerFilters.cs +++ b/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlerFilters.cs @@ -12,8 +12,9 @@ namespace OpenIddict.Validation.SystemNetHttp; public static class OpenIddictValidationSystemNetHttpHandlerFilters { ///

- /// Represents a filter that excludes the associated handlers if the metadata URI of the issuer is not available. + /// Represents a filter that excludes the associated handlers if the URI is not an HTTP or HTTPS address. /// + [Obsolete("This filter is obsolete and will be removed in a future version.")] public sealed class RequireHttpMetadataUri : IOpenIddictValidationHandlerFilter { /// @@ -25,7 +26,26 @@ public ValueTask IsActiveAsync(BaseExternalContext context) } return new( - string.Equals(context.RemoteUri?.Scheme, Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || + string.Equals(context.RemoteUri?.Scheme, Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || + string.Equals(context.RemoteUri?.Scheme, Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)); + } + } + + /// + /// Represents a filter that excludes the associated handlers if the URI is not an HTTP or HTTPS address. + /// + public sealed class RequireHttpUri : IOpenIddictValidationHandlerFilter + { + /// + public ValueTask IsActiveAsync(BaseExternalContext context) + { + if (context is null) + { + throw new ArgumentNullException(nameof(context)); + } + + return new( + string.Equals(context.RemoteUri?.Scheme, Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || string.Equals(context.RemoteUri?.Scheme, Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)); } } diff --git a/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.Introspection.cs b/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.Introspection.cs index 14ecf0d85..f99211759 100644 --- a/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.Introspection.cs +++ b/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.Introspection.cs @@ -51,7 +51,7 @@ public sealed class AttachBasicAuthenticationCredentials : IOpenIddictValidation /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler() .SetOrder(AttachHttpParameters.Descriptor.Order - 500) .SetType(OpenIddictValidationHandlerType.BuiltIn) diff --git a/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.cs b/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.cs index 06bd8f7f0..6dc3e39b2 100644 --- a/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.cs +++ b/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.cs @@ -40,7 +40,7 @@ public CreateHttpClient(IHttpClientFactory factory) /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(int.MinValue + 100_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -74,7 +74,7 @@ public sealed class PrepareGetHttpRequest : IOpenIddictValidationHandl /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(CreateHttpClient.Descriptor.Order + 1_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -106,7 +106,7 @@ public sealed class PreparePostHttpRequest : IOpenIddictValidationHand /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(PrepareGetHttpRequest.Descriptor.Order + 1_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -138,7 +138,7 @@ public sealed class AttachHttpVersion : IOpenIddictValidationHandler public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(PreparePostHttpRequest.Descriptor.Order + 1_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -186,7 +186,7 @@ public sealed class AttachJsonAcceptHeaders : IOpenIddictValidationHan /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(AttachHttpVersion.Descriptor.Order + 1_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -231,7 +231,7 @@ public AttachUserAgentHeader(IOptionsMonitor public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(AttachJsonAcceptHeaders.Descriptor.Order + 1_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -287,7 +287,7 @@ public AttachFromHeader(IOptionsMonitor public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(AttachUserAgentHeader.Descriptor.Order + 1_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -323,7 +323,7 @@ public sealed class AttachHttpParameters : IOpenIddictValidationHandle /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(int.MaxValue - 100_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -383,7 +383,7 @@ public sealed class SendHttpRequest : IOpenIddictValidationHandler public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(DisposeHttpRequest.Descriptor.Order - 50_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -447,7 +447,7 @@ public sealed class DisposeHttpRequest : IOpenIddictValidationHandler< /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(int.MaxValue - 100_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -485,7 +485,7 @@ public sealed class DecompressResponseContent : IOpenIddictValidationH /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(ExtractJsonHttpResponse.Descriptor.Order - 1_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -631,7 +631,7 @@ public sealed class ExtractJsonHttpResponse : IOpenIddictValidationHan /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(ExtractWwwAuthenticateHeader.Descriptor.Order - 1_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -710,7 +710,7 @@ public sealed class ExtractWwwAuthenticateHeader : IOpenIddictValidati /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(ValidateHttpResponse.Descriptor.Order - 1_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -793,7 +793,7 @@ public sealed class ValidateHttpResponse : IOpenIddictValidationHandle /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(DisposeHttpResponse.Descriptor.Order - 50_000) .SetType(OpenIddictValidationHandlerType.BuiltIn) @@ -863,7 +863,7 @@ public sealed class DisposeHttpResponse : IOpenIddictValidationHandler /// public static OpenIddictValidationHandlerDescriptor Descriptor { get; } = OpenIddictValidationHandlerDescriptor.CreateBuilder() - .AddFilter() + .AddFilter() .UseSingletonHandler>() .SetOrder(int.MaxValue - 100_000) .SetType(OpenIddictValidationHandlerType.BuiltIn)