Browse Source

Bump the .NET SDK to 8.0.200 and stop using collection expressions with ImmutableArray<T>

pull/2000/head
Kévin Chalet 2 years ago
parent
commit
26fdb68773
  1. 4
      .github/workflows/build.yml
  2. 1
      Directory.Build.targets
  3. 4
      global.json
  4. 11
      shared/OpenIddict.Extensions/OpenIddictPolyfills.cs
  5. 2
      src/OpenIddict.Abstractions/OpenIddictExceptions.cs
  6. 40
      src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs
  7. 4
      src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlers.Authentication.cs
  8. 4
      src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlers.Session.cs
  9. 4
      src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlers.cs
  10. 4
      src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionHandlers.Protection.cs
  11. 2
      src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionHandlers.cs
  12. 4
      src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlers.Authentication.cs
  13. 4
      src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlers.Session.cs
  14. 4
      src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlers.cs
  15. 4
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHandlers.Authentication.cs
  16. 4
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHandlers.cs
  17. 4
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Device.cs
  18. 4
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Discovery.cs
  19. 4
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Exchange.cs
  20. 4
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Introspection.cs
  21. 4
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Revocation.cs
  22. 4
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Userinfo.cs
  23. 4
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.cs
  24. 4
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Authentication.cs
  25. 4
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Device.cs
  26. 4
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Discovery.cs
  27. 4
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Exchange.cs
  28. 4
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Protection.cs
  29. 4
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Revocation.cs
  30. 4
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs
  31. 4
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.cs
  32. 2
      src/OpenIddict.Client/OpenIddictClientHandlerDescriptor.cs
  33. 4
      src/OpenIddict.Client/OpenIddictClientHandlers.Authentication.cs
  34. 4
      src/OpenIddict.Client/OpenIddictClientHandlers.Device.cs
  35. 4
      src/OpenIddict.Client/OpenIddictClientHandlers.Discovery.cs
  36. 4
      src/OpenIddict.Client/OpenIddictClientHandlers.Exchange.cs
  37. 8
      src/OpenIddict.Client/OpenIddictClientHandlers.Introspection.cs
  38. 4
      src/OpenIddict.Client/OpenIddictClientHandlers.Protection.cs
  39. 4
      src/OpenIddict.Client/OpenIddictClientHandlers.Revocation.cs
  40. 4
      src/OpenIddict.Client/OpenIddictClientHandlers.Session.cs
  41. 4
      src/OpenIddict.Client/OpenIddictClientHandlers.Userinfo.cs
  42. 4
      src/OpenIddict.Client/OpenIddictClientHandlers.cs
  43. 2
      src/OpenIddict.Client/OpenIddictClientService.cs
  44. 12
      src/OpenIddict.Core/Managers/OpenIddictApplicationManager.cs
  45. 8
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkApplicationStore.cs
  46. 2
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkAuthorizationStore.cs
  47. 2
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkScopeStore.cs
  48. 8
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreApplicationStore.cs
  49. 2
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreAuthorizationStore.cs
  50. 2
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreScopeStore.cs
  51. 8
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbApplicationStore.cs
  52. 2
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbAuthorizationStore.cs
  53. 2
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbScopeStore.cs
  54. 4
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Authentication.cs
  55. 4
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Device.cs
  56. 4
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Discovery.cs
  57. 4
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Exchange.cs
  58. 4
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Introspection.cs
  59. 4
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Revocation.cs
  60. 4
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Session.cs
  61. 4
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Userinfo.cs
  62. 4
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.cs
  63. 4
      src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionHandlers.Protection.cs
  64. 2
      src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionHandlers.cs
  65. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Authentication.cs
  66. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Device.cs
  67. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Discovery.cs
  68. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Exchange.cs
  69. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Introspection.cs
  70. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Revocation.cs
  71. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Session.cs
  72. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Userinfo.cs
  73. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.cs
  74. 2
      src/OpenIddict.Server/OpenIddictServerHandlerDescriptor.cs
  75. 4
      src/OpenIddict.Server/OpenIddictServerHandlers.Authentication.cs
  76. 4
      src/OpenIddict.Server/OpenIddictServerHandlers.Device.cs
  77. 4
      src/OpenIddict.Server/OpenIddictServerHandlers.Discovery.cs
  78. 4
      src/OpenIddict.Server/OpenIddictServerHandlers.Exchange.cs
  79. 4
      src/OpenIddict.Server/OpenIddictServerHandlers.Introspection.cs
  80. 4
      src/OpenIddict.Server/OpenIddictServerHandlers.Protection.cs
  81. 4
      src/OpenIddict.Server/OpenIddictServerHandlers.Revocation.cs
  82. 4
      src/OpenIddict.Server/OpenIddictServerHandlers.Session.cs
  83. 4
      src/OpenIddict.Server/OpenIddictServerHandlers.Userinfo.cs
  84. 6
      src/OpenIddict.Server/OpenIddictServerHandlers.cs
  85. 4
      src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlers.cs
  86. 4
      src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionHandlers.Protection.cs
  87. 2
      src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionHandlers.cs
  88. 4
      src/OpenIddict.Validation.Owin/OpenIddictValidationOwinHandlers.cs
  89. 4
      src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.Discovery.cs
  90. 4
      src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.Introspection.cs
  91. 2
      src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.cs
  92. 2
      src/OpenIddict.Validation/OpenIddictValidationHandlerDescriptor.cs
  93. 4
      src/OpenIddict.Validation/OpenIddictValidationHandlers.Discovery.cs
  94. 8
      src/OpenIddict.Validation/OpenIddictValidationHandlers.Introspection.cs
  95. 4
      src/OpenIddict.Validation/OpenIddictValidationHandlers.Protection.cs
  96. 4
      src/OpenIddict.Validation/OpenIddictValidationHandlers.cs
  97. 48
      test/OpenIddict.Abstractions.Tests/Primitives/OpenIddictExtensionsTests.cs
  98. 6
      test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Authentication.cs
  99. 8
      test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Exchange.cs
  100. 7
      test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Protection.cs

4
.github/workflows/build.yml

@ -45,7 +45,7 @@ jobs:
dotnet-version: |
6.0.418
7.0.405
8.0.101
8.0.200
# Arcade only allows the revision to contain up to two characters, and GitHub Actions does not roll-over
# build numbers every day like Azure DevOps does. To balance these two requirements, set the official
@ -105,7 +105,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '8.0.101'
dotnet-version: '8.0.200'
- name: Validate NuGet packages
shell: pwsh

1
Directory.Build.targets

@ -117,7 +117,6 @@
<PropertyGroup
Condition=" ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' And $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '8.0'))) ">
<DefineConstants>$(DefineConstants);SUPPORTS_HTTP_CLIENT_RESILIENCE</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_IMMUTABLE_COLLECTIONS_MARSHAL</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_TIME_PROVIDER</DefineConstants>
</PropertyGroup>

4
global.json

@ -1,12 +1,12 @@
{
"sdk": {
"version": "8.0.101",
"version": "8.0.200",
"allowPrerelease": true,
"rollForward": "major"
},
"tools": {
"dotnet": "8.0.101",
"dotnet": "8.0.200",
"runtimes": {
"aspnetcore": [

11
shared/OpenIddict.Extensions/OpenIddictPolyfills.cs

@ -1,11 +0,0 @@
using System.Collections.Immutable;
using System.Runtime.CompilerServices;
#if !SUPPORTS_IMMUTABLE_COLLECTIONS_MARSHAL
namespace System.Runtime.InteropServices;
internal static class ImmutableCollectionsMarshal
{
public static ImmutableArray<T> AsImmutableArray<T>(T[] array) => Unsafe.As<T[], ImmutableArray<T>>(ref array);
}
#endif

2
src/OpenIddict.Abstractions/OpenIddictExceptions.cs

@ -109,7 +109,7 @@ public static class OpenIddictExceptions
/// </summary>
/// <param name="message">The exception message.</param>
public ValidationException(string? message)
: this(message, [])
: this(message, ImmutableArray<ValidationResult>.Empty)
{
}

40
src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs

@ -510,7 +510,7 @@ public static class OpenIddictExtensions
if (string.IsNullOrEmpty(destinations))
{
return [];
return ImmutableArray<string>.Empty;
}
using var document = JsonDocument.Parse(destinations);
@ -620,7 +620,7 @@ public static class OpenIddictExtensions
/// <param name="claim">The <see cref="Claim"/> instance.</param>
/// <param name="destinations">The destinations.</param>
public static Claim SetDestinations(this Claim claim, IEnumerable<string>? destinations)
=> claim.SetDestinations(destinations?.ToImmutableArray() ?? []);
=> claim.SetDestinations(destinations?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Adds specific destinations to a claim.
@ -628,7 +628,7 @@ public static class OpenIddictExtensions
/// <param name="claim">The <see cref="Claim"/> instance.</param>
/// <param name="destinations">The destinations.</param>
public static Claim SetDestinations(this Claim claim, params string[]? destinations)
=> claim.SetDestinations(destinations?.ToImmutableArray() ?? []);
=> claim.SetDestinations(destinations?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Gets the destinations associated with all the claims of the given identity.
@ -2868,7 +2868,7 @@ public static class OpenIddictExtensions
/// <param name="audiences">The audiences to store.</param>
/// <returns>The claims identity.</returns>
public static ClaimsIdentity SetAudiences(this ClaimsIdentity identity, IEnumerable<string>? audiences)
=> identity.SetAudiences(audiences?.ToImmutableArray() ?? []);
=> identity.SetAudiences(audiences?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the audiences list in the claims principal.
@ -2878,7 +2878,7 @@ public static class OpenIddictExtensions
/// <param name="audiences">The audiences to store.</param>
/// <returns>The claims principal.</returns>
public static ClaimsPrincipal SetAudiences(this ClaimsPrincipal principal, IEnumerable<string>? audiences)
=> principal.SetAudiences(audiences?.ToImmutableArray() ?? []);
=> principal.SetAudiences(audiences?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the audiences list in the claims identity.
@ -2888,7 +2888,7 @@ public static class OpenIddictExtensions
/// <param name="audiences">The audiences to store.</param>
/// <returns>The claims identity.</returns>
public static ClaimsIdentity SetAudiences(this ClaimsIdentity identity, params string[]? audiences)
=> identity.SetAudiences(audiences?.ToImmutableArray() ?? []);
=> identity.SetAudiences(audiences?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the audiences list in the claims principal.
@ -2898,7 +2898,7 @@ public static class OpenIddictExtensions
/// <param name="audiences">The audiences to store.</param>
/// <returns>The claims principal.</returns>
public static ClaimsPrincipal SetAudiences(this ClaimsPrincipal principal, params string[]? audiences)
=> principal.SetAudiences(audiences?.ToImmutableArray() ?? []);
=> principal.SetAudiences(audiences?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the presenters list in the claims identity.
@ -2928,7 +2928,7 @@ public static class OpenIddictExtensions
/// <param name="presenters">The presenters to store.</param>
/// <returns>The claims identity.</returns>
public static ClaimsIdentity SetPresenters(this ClaimsIdentity identity, IEnumerable<string>? presenters)
=> identity.SetPresenters(presenters?.ToImmutableArray() ?? []);
=> identity.SetPresenters(presenters?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the presenters list in the claims principal.
@ -2938,7 +2938,7 @@ public static class OpenIddictExtensions
/// <param name="presenters">The presenters to store.</param>
/// <returns>The claims principal.</returns>
public static ClaimsPrincipal SetPresenters(this ClaimsPrincipal principal, IEnumerable<string>? presenters)
=> principal.SetPresenters(presenters?.ToImmutableArray() ?? []);
=> principal.SetPresenters(presenters?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the presenters list in the claims identity.
@ -2948,7 +2948,7 @@ public static class OpenIddictExtensions
/// <param name="presenters">The presenters to store.</param>
/// <returns>The claims identity.</returns>
public static ClaimsIdentity SetPresenters(this ClaimsIdentity identity, params string[]? presenters)
=> identity.SetPresenters(presenters?.ToImmutableArray() ?? []);
=> identity.SetPresenters(presenters?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the presenters list in the claims principal.
@ -2958,7 +2958,7 @@ public static class OpenIddictExtensions
/// <param name="presenters">The presenters to store.</param>
/// <returns>The claims principal.</returns>
public static ClaimsPrincipal SetPresenters(this ClaimsPrincipal principal, params string[]? presenters)
=> principal.SetPresenters(presenters?.ToImmutableArray() ?? []);
=> principal.SetPresenters(presenters?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the resources list in the claims identity.
@ -2988,7 +2988,7 @@ public static class OpenIddictExtensions
/// <param name="resources">The resources to store.</param>
/// <returns>The claims identity.</returns>
public static ClaimsIdentity SetResources(this ClaimsIdentity identity, IEnumerable<string>? resources)
=> identity.SetResources(resources?.ToImmutableArray() ?? []);
=> identity.SetResources(resources?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the resources list in the claims principal.
@ -2998,7 +2998,7 @@ public static class OpenIddictExtensions
/// <param name="resources">The resources to store.</param>
/// <returns>The claims principal.</returns>
public static ClaimsPrincipal SetResources(this ClaimsPrincipal principal, IEnumerable<string>? resources)
=> principal.SetResources(resources?.ToImmutableArray() ?? []);
=> principal.SetResources(resources?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the resources list in the claims identity.
@ -3008,7 +3008,7 @@ public static class OpenIddictExtensions
/// <param name="resources">The resources to store.</param>
/// <returns>The claims identity.</returns>
public static ClaimsIdentity SetResources(this ClaimsIdentity identity, params string[]? resources)
=> identity.SetResources(resources?.ToImmutableArray() ?? []);
=> identity.SetResources(resources?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the resources list in the claims principal.
@ -3018,7 +3018,7 @@ public static class OpenIddictExtensions
/// <param name="resources">The resources to store.</param>
/// <returns>The claims principal.</returns>
public static ClaimsPrincipal SetResources(this ClaimsPrincipal principal, params string[]? resources)
=> principal.SetResources(resources?.ToImmutableArray() ?? []);
=> principal.SetResources(resources?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the scopes list in the claims identity.
@ -3048,7 +3048,7 @@ public static class OpenIddictExtensions
/// <param name="scopes">The scopes to store.</param>
/// <returns>The claims identity.</returns>
public static ClaimsIdentity SetScopes(this ClaimsIdentity identity, IEnumerable<string>? scopes)
=> identity.SetScopes(scopes?.ToImmutableArray() ?? []);
=> identity.SetScopes(scopes?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the scopes list in the claims principal.
@ -3058,7 +3058,7 @@ public static class OpenIddictExtensions
/// <param name="scopes">The scopes to store.</param>
/// <returns>The claims principal.</returns>
public static ClaimsPrincipal SetScopes(this ClaimsPrincipal principal, IEnumerable<string>? scopes)
=> principal.SetScopes(scopes?.ToImmutableArray() ?? []);
=> principal.SetScopes(scopes?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the scopes list in the claims identity.
@ -3068,7 +3068,7 @@ public static class OpenIddictExtensions
/// <param name="scopes">The scopes to store.</param>
/// <returns>The claims identity.</returns>
public static ClaimsIdentity SetScopes(this ClaimsIdentity identity, params string[]? scopes)
=> identity.SetScopes(scopes?.ToImmutableArray() ?? []);
=> identity.SetScopes(scopes?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the scopes list in the claims principal.
@ -3078,7 +3078,7 @@ public static class OpenIddictExtensions
/// <param name="scopes">The scopes to store.</param>
/// <returns>The claims principal.</returns>
public static ClaimsPrincipal SetScopes(this ClaimsPrincipal principal, params string[]? scopes)
=> principal.SetScopes(scopes?.ToImmutableArray() ?? []);
=> principal.SetScopes(scopes?.ToImmutableArray() ?? ImmutableArray<string>.Empty);
/// <summary>
/// Sets the access token lifetime associated with the claims identity.
@ -3266,7 +3266,7 @@ public static class OpenIddictExtensions
if (string.IsNullOrEmpty(source))
{
return [];
return ImmutableArray<string>.Empty;
}
var builder = ImmutableArray.CreateBuilder<string>();

4
src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlers.Authentication.cs

@ -14,7 +14,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
{
public static class Authentication
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Authorization request processing:
*/
@ -38,7 +38,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
ProcessPassthroughErrorResponse<ApplyRedirectionResponseContext, RequireRedirectionEndpointPassthroughEnabled>.Descriptor,
ProcessStatusCodePagesErrorResponse<ApplyRedirectionResponseContext>.Descriptor,
ProcessLocalErrorResponse<ApplyRedirectionResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for processing authorization requests using 302 redirects.

4
src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlers.Session.cs

@ -14,7 +14,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
{
public static class Session
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Session request processing:
*/
@ -38,7 +38,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
ProcessPassthroughErrorResponse<ApplyPostLogoutRedirectionResponseContext, RequirePostLogoutRedirectionEndpointPassthroughEnabled>.Descriptor,
ProcessStatusCodePagesErrorResponse<ApplyPostLogoutRedirectionResponseContext>.Descriptor,
ProcessLocalErrorResponse<ApplyPostLogoutRedirectionResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for processing authorization requests using 302 redirects.

4
src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlers.cs

@ -30,7 +30,7 @@ namespace OpenIddict.Client.AspNetCore;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictClientAspNetCoreHandlers
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Top-level request processing:
*/
@ -74,7 +74,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
.. Authentication.DefaultHandlers,
.. Session.DefaultHandlers
];
]);
/// <summary>
/// Contains the logic responsible for resolving the request URI from the ASP.NET Core environment.

4
src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionHandlers.Protection.cs

@ -21,7 +21,7 @@ public static partial class OpenIddictClientDataProtectionHandlers
{
public static class Protection
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token validation:
*/
@ -32,7 +32,7 @@ public static partial class OpenIddictClientDataProtectionHandlers
*/
OverrideGeneratedTokenFormat.Descriptor,
GenerateDataProtectionToken.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating tokens generated using Data Protection.

2
src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionHandlers.cs

@ -13,5 +13,5 @@ namespace OpenIddict.Client.DataProtection;
public static partial class OpenIddictClientDataProtectionHandlers
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; }
= [.. Protection.DefaultHandlers];
= ImmutableArray.Create([.. Protection.DefaultHandlers]);
}

4
src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlers.Authentication.cs

@ -13,7 +13,7 @@ public static partial class OpenIddictClientOwinHandlers
{
public static class Authentication
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Authorization request processing:
*/
@ -38,7 +38,7 @@ public static partial class OpenIddictClientOwinHandlers
AttachCacheControlHeader<ApplyRedirectionResponseContext>.Descriptor,
ProcessPassthroughErrorResponse<ApplyRedirectionResponseContext, RequireRedirectionEndpointPassthroughEnabled>.Descriptor,
ProcessLocalErrorResponse<ApplyRedirectionResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for processing authorization requests using 302 redirects.

4
src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlers.Session.cs

@ -13,7 +13,7 @@ public static partial class OpenIddictClientOwinHandlers
{
public static class Session
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Session request processing:
*/
@ -36,7 +36,7 @@ public static partial class OpenIddictClientOwinHandlers
AttachCacheControlHeader<ApplyPostLogoutRedirectionResponseContext>.Descriptor,
ProcessPassthroughErrorResponse<ApplyPostLogoutRedirectionResponseContext, RequirePostLogoutRedirectionEndpointPassthroughEnabled>.Descriptor,
ProcessLocalErrorResponse<ApplyPostLogoutRedirectionResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for processing authorization requests using 302 redirects.

4
src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlers.cs

@ -25,7 +25,7 @@ namespace OpenIddict.Client.Owin;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictClientOwinHandlers
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Top-level request processing:
*/
@ -68,7 +68,7 @@ public static partial class OpenIddictClientOwinHandlers
.. Authentication.DefaultHandlers,
.. Session.DefaultHandlers
];
]);
/// <summary>
/// Contains the logic responsible for resolving the request URI from the OWIN environment.

4
src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHandlers.Authentication.cs

@ -23,7 +23,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
{
public static class Authentication
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Authorization request processing:
*/
@ -45,7 +45,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
ProcessEmptyHttpResponse.Descriptor,
ProcessProtocolActivationResponse<ApplyRedirectionResponseContext>.Descriptor,
ProcessWebAuthenticationResultResponse<ApplyRedirectionResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for initiating authorization requests using the web authentication broker.

4
src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHandlers.cs

@ -31,7 +31,7 @@ namespace OpenIddict.Client.SystemIntegration;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictClientSystemIntegrationHandlers
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Top-level request processing:
*/
@ -83,7 +83,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
AbortAuthenticationDemand.Descriptor,
.. Authentication.DefaultHandlers
];
]);
/// <summary>
/// Contains the logic responsible for resolving the request URI from the HTTP listener request.

4
src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Device.cs

@ -16,7 +16,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
{
public static class Device
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* DeviceAuthorization request processing:
*/
@ -39,7 +39,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
ExtractWwwAuthenticateHeader<ExtractDeviceAuthorizationResponseContext>.Descriptor,
ValidateHttpResponse<ExtractDeviceAuthorizationResponseContext>.Descriptor,
DisposeHttpResponse<ExtractDeviceAuthorizationResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for attaching the client credentials to the HTTP Authorization header.

4
src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Discovery.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
{
public static class Discovery
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Configuration request processing:
*/
@ -56,6 +56,6 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
ExtractWwwAuthenticateHeader<ExtractCryptographyResponseContext>.Descriptor,
ValidateHttpResponse<ExtractCryptographyResponseContext>.Descriptor,
DisposeHttpResponse<ExtractCryptographyResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Exchange.cs

@ -16,7 +16,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
{
public static class Exchange
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token request processing:
*/
@ -39,7 +39,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
ExtractWwwAuthenticateHeader<ExtractTokenResponseContext>.Descriptor,
ValidateHttpResponse<ExtractTokenResponseContext>.Descriptor,
DisposeHttpResponse<ExtractTokenResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for attaching the client credentials to the HTTP Authorization header.

4
src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Introspection.cs

@ -16,7 +16,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
{
public static class Introspection
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Introspection request processing:
*/
@ -39,7 +39,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
ExtractWwwAuthenticateHeader<ExtractIntrospectionResponseContext>.Descriptor,
ValidateHttpResponse<ExtractIntrospectionResponseContext>.Descriptor,
DisposeHttpResponse<ExtractIntrospectionResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for attaching the client credentials to the HTTP Authorization header.

4
src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Revocation.cs

@ -16,7 +16,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
{
public static class Revocation
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Revocation request processing:
*/
@ -40,7 +40,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
ExtractEmptyHttpResponse<ExtractRevocationResponseContext>.Descriptor,
ValidateHttpResponse<ExtractRevocationResponseContext>.Descriptor,
DisposeHttpResponse<ExtractRevocationResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for attaching the client credentials to the HTTP Authorization header.

4
src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Userinfo.cs

@ -16,7 +16,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
{
public static class Userinfo
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Userinfo request processing:
*/
@ -40,7 +40,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
ExtractWwwAuthenticateHeader<ExtractUserinfoResponseContext>.Descriptor,
ValidateHttpResponse<ExtractUserinfoResponseContext>.Descriptor,
DisposeHttpResponse<ExtractUserinfoResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for attaching the access token to the HTTP Authorization header.

4
src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.cs

@ -21,14 +21,14 @@ namespace OpenIddict.Client.SystemNetHttp;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictClientSystemNetHttpHandlers
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
.. Device.DefaultHandlers,
.. Discovery.DefaultHandlers,
.. Exchange.DefaultHandlers,
.. Introspection.DefaultHandlers,
.. Revocation.DefaultHandlers,
.. Userinfo.DefaultHandlers
];
]);
/// <summary>
/// Contains the logic responsible for creating and attaching a <see cref="HttpClient"/>.

4
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Authentication.cs

@ -13,12 +13,12 @@ public static partial class OpenIddictClientWebIntegrationHandlers
{
public static class Authentication
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Authorization request preparation:
*/
MapNonStandardRequestParameters.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for mapping non-standard request parameters

4
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Device.cs

@ -13,12 +13,12 @@ public static partial class OpenIddictClientWebIntegrationHandlers
{
public static class Device
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token response extraction:
*/
MapNonStandardResponseParameters.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for mapping non-standard response parameters

4
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Discovery.cs

@ -15,7 +15,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
{
public static class Discovery
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Configuration response handling:
*/
@ -25,7 +25,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
AmendScopes.Descriptor,
AmendClientAuthenticationMethods.Descriptor,
AmendEndpoints.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for amending the issuer for the providers that require it.

4
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Exchange.cs

@ -24,7 +24,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
{
public static class Exchange
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token request preparation:
*/
@ -38,7 +38,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
* Token response extraction:
*/
MapNonStandardResponseParameters.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for mapping non-standard request parameters

4
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Protection.cs

@ -14,12 +14,12 @@ public static partial class OpenIddictClientWebIntegrationHandlers
{
public static class Protection
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token validation:
*/
AmendTokenValidationParameters.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for amending the token validation parameters for the providers that require it.

4
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Revocation.cs

@ -20,7 +20,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
{
public static class Revocation
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Revocation request preparation:
*/
@ -30,7 +30,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
* Revocation response extraction:
*/
NormalizeContentType.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for attaching the client credentials to the HTTP Authorization

4
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs

@ -21,7 +21,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
{
public static class Userinfo
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Userinfo request preparation:
*/
@ -36,7 +36,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
*/
NormalizeContentType.Descriptor,
UnwrapUserinfoResponse.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for overriding the HTTP method for the providers that require it.

4
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.cs

@ -18,7 +18,7 @@ namespace OpenIddict.Client.WebIntegration;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictClientWebIntegrationHandlers
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Authentication processing:
*/
@ -62,7 +62,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
.. Protection.DefaultHandlers,
.. Revocation.DefaultHandlers,
.. Userinfo.DefaultHandlers
];
]);
/// <summary>
/// Contains the logic responsible for validating the signature or message authentication

2
src/OpenIddict.Client/OpenIddictClientHandlerDescriptor.cs

@ -31,7 +31,7 @@ public sealed class OpenIddictClientHandlerDescriptor
/// Gets the list of filters responsible for excluding the handler
/// from the activated handlers if it doesn't meet the criteria.
/// </summary>
public ImmutableArray<Type> FilterTypes { get; private set; } = [];
public ImmutableArray<Type> FilterTypes { get; private set; } = ImmutableArray<Type>.Empty;
/// <summary>
/// Gets the order assigned to the handler.

4
src/OpenIddict.Client/OpenIddictClientHandlers.Authentication.cs

@ -13,7 +13,7 @@ public static partial class OpenIddictClientHandlers
{
public static class Authentication
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Authorization request top-level processing:
*/
@ -43,7 +43,7 @@ public static partial class OpenIddictClientHandlers
* Redirection request validation:
*/
ValidateTokens.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for preparing authorization requests and invoking the corresponding event handlers.

4
src/OpenIddict.Client/OpenIddictClientHandlers.Device.cs

@ -14,14 +14,14 @@ public static partial class OpenIddictClientHandlers
{
public static class Device
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Device authorization response handling:
*/
ValidateWellKnownParameters.Descriptor,
HandleErrorResponse.Descriptor,
ValidateVerificationEndpointUri.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating the well-known parameters contained in the device authorization response.

4
src/OpenIddict.Client/OpenIddictClientHandlers.Discovery.cs

@ -15,7 +15,7 @@ public static partial class OpenIddictClientHandlers
{
public static class Discovery
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Configuration response handling:
*/
@ -47,7 +47,7 @@ public static partial class OpenIddictClientHandlers
ValidateWellKnownCryptographyParameters.Descriptor,
HandleCryptographyErrorResponse.Descriptor,
ExtractSigningKeys.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating the well-known parameters contained in the configuration response.

4
src/OpenIddict.Client/OpenIddictClientHandlers.Exchange.cs

@ -14,13 +14,13 @@ public static partial class OpenIddictClientHandlers
{
public static class Exchange
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token response handling:
*/
ValidateWellKnownParameters.Descriptor,
HandleErrorResponse.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating the well-known parameters contained in the token response.

8
src/OpenIddict.Client/OpenIddictClientHandlers.Introspection.cs

@ -17,7 +17,7 @@ public static partial class OpenIddictClientHandlers
{
public static class Introspection
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Introspection response handling:
*/
@ -29,7 +29,7 @@ public static partial class OpenIddictClientHandlers
ValidateTokenUsage.Descriptor,
PopulateClaims.Descriptor,
MapInternalClaims.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating the well-known parameters contained in the introspection response.
@ -513,7 +513,7 @@ public static partial class OpenIddictClientHandlers
string identifier when !string.IsNullOrEmpty(identifier)
=> ImmutableArray.Create(identifier),
_ => []
_ => ImmutableArray<string>.Empty
});
// Map the internal "oi_scp" claims from the standard, space-separated "scope" claim, if available.
@ -521,7 +521,7 @@ public static partial class OpenIddictClientHandlers
{
string scope => scope.Split(Separators.Space, StringSplitOptions.RemoveEmptyEntries).ToImmutableArray(),
_ => []
_ => ImmutableArray<string>.Empty
});
return default;

4
src/OpenIddict.Client/OpenIddictClientHandlers.Protection.cs

@ -19,7 +19,7 @@ public static partial class OpenIddictClientHandlers
{
public static class Protection
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token validation:
*/
@ -39,7 +39,7 @@ public static partial class OpenIddictClientHandlers
CreateTokenEntry.Descriptor,
GenerateIdentityModelToken.Descriptor,
AttachTokenPayload.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for resolving the validation parameters used to validate tokens.

4
src/OpenIddict.Client/OpenIddictClientHandlers.Revocation.cs

@ -14,13 +14,13 @@ public static partial class OpenIddictClientHandlers
{
public static class Revocation
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Revocation response handling:
*/
ValidateWellKnownParameters.Descriptor,
HandleErrorResponse.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating the well-known parameters contained in the revocation response.

4
src/OpenIddict.Client/OpenIddictClientHandlers.Session.cs

@ -13,7 +13,7 @@ public static partial class OpenIddictClientHandlers
{
public static class Session
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Logout request top-level processing:
*/
@ -38,7 +38,7 @@ public static partial class OpenIddictClientHandlers
* Post-logout redirection request validation:
*/
ValidateTokens.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for preparing authorization requests and invoking the corresponding event handlers.

4
src/OpenIddict.Client/OpenIddictClientHandlers.Userinfo.cs

@ -16,14 +16,14 @@ public static partial class OpenIddictClientHandlers
{
public static class Userinfo
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Userinfo response handling:
*/
ValidateWellKnownParameters.Descriptor,
HandleErrorResponse.Descriptor,
PopulateClaims.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating the well-known parameters contained in the userinfo response.

4
src/OpenIddict.Client/OpenIddictClientHandlers.cs

@ -22,7 +22,7 @@ namespace OpenIddict.Client;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictClientHandlers
{
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictClientHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Top-level request processing:
*/
@ -192,7 +192,7 @@ public static partial class OpenIddictClientHandlers
.. Revocation.DefaultHandlers,
.. Session.DefaultHandlers,
.. Userinfo.DefaultHandlers
];
]);
/// <summary>
/// Contains the logic responsible for inferring the endpoint type from the request URI.

2
src/OpenIddict.Client/OpenIddictClientService.cs

@ -47,7 +47,7 @@ public class OpenIddictClientService
var options = _provider.GetRequiredService<IOptionsMonitor<OpenIddictClientOptions>>();
return new(options.CurrentValue.Registrations switch
{
[ ] => ImmutableArray.Create<OpenIddictClientRegistration>(),
[ ] => ImmutableArray<OpenIddictClientRegistration>.Empty,
[..] registrations => registrations.ToImmutableArray()
});
}

12
src/OpenIddict.Core/Managers/OpenIddictApplicationManager.cs

@ -1025,9 +1025,11 @@ public class OpenIddictApplicationManager<TApplication> : IOpenIddictApplication
await Store.SetDisplayNamesAsync(application, descriptor.DisplayNames.ToImmutableDictionary(), cancellationToken);
await Store.SetJsonWebKeySetAsync(application, descriptor.JsonWebKeySet, cancellationToken);
await Store.SetPermissionsAsync(application, descriptor.Permissions.ToImmutableArray(), cancellationToken);
await Store.SetPostLogoutRedirectUrisAsync(application, [.. descriptor.PostLogoutRedirectUris.Select(uri => uri.OriginalString)], cancellationToken);
await Store.SetPostLogoutRedirectUrisAsync(application,
descriptor.PostLogoutRedirectUris.Select(uri => uri.OriginalString).ToImmutableArray(), cancellationToken);
await Store.SetPropertiesAsync(application, descriptor.Properties.ToImmutableDictionary(), cancellationToken);
await Store.SetRedirectUrisAsync(application, [.. descriptor.RedirectUris.Select(uri => uri.OriginalString)], cancellationToken);
await Store.SetRedirectUrisAsync(application,
descriptor.RedirectUris.Select(uri => uri.OriginalString).ToImmutableArray(), cancellationToken);
await Store.SetRequirementsAsync(application, descriptor.Requirements.ToImmutableArray(), cancellationToken);
await Store.SetSettingsAsync(application, descriptor.Settings.ToImmutableDictionary(), cancellationToken);
}
@ -1322,9 +1324,9 @@ public class OpenIddictApplicationManager<TApplication> : IOpenIddictApplication
// When callback URIs are specified, ensure they are valid and spec-compliant.
// See https://tools.ietf.org/html/rfc6749#section-3.1 for more information.
foreach (var uri in ImmutableArray.Create<string>()
.AddRange(await Store.GetPostLogoutRedirectUrisAsync(application, cancellationToken))
.AddRange(await Store.GetRedirectUrisAsync(application, cancellationToken)))
foreach (var uri in (List<string>) [
.. await Store.GetPostLogoutRedirectUrisAsync(application, cancellationToken),
.. await Store.GetRedirectUrisAsync(application, cancellationToken)])
{
// Ensure the URI is not null or empty.
if (string.IsNullOrEmpty(uri))

8
src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkApplicationStore.cs

@ -489,7 +489,7 @@ public class OpenIddictEntityFrameworkApplicationStore<TApplication, TAuthorizat
if (string.IsNullOrEmpty(application.Permissions))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified permissions is an expensive operation.
@ -530,7 +530,7 @@ public class OpenIddictEntityFrameworkApplicationStore<TApplication, TAuthorizat
if (string.IsNullOrEmpty(application.PostLogoutRedirectUris))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified URIs is an expensive operation.
@ -606,7 +606,7 @@ public class OpenIddictEntityFrameworkApplicationStore<TApplication, TAuthorizat
if (string.IsNullOrEmpty(application.RedirectUris))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified URIs is an expensive operation.
@ -647,7 +647,7 @@ public class OpenIddictEntityFrameworkApplicationStore<TApplication, TAuthorizat
if (string.IsNullOrEmpty(application.Requirements))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified requirements is an expensive operation.

2
src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkAuthorizationStore.cs

@ -486,7 +486,7 @@ public class OpenIddictEntityFrameworkAuthorizationStore<TAuthorization, TApplic
if (string.IsNullOrEmpty(authorization.Scopes))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified scopes is an expensive operation.

2
src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkScopeStore.cs

@ -407,7 +407,7 @@ public class OpenIddictEntityFrameworkScopeStore<TScope, TContext, TKey> : IOpen
if (string.IsNullOrEmpty(scope.Resources))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified resources is an expensive operation.

8
src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreApplicationStore.cs

@ -558,7 +558,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<TApplication, TAuthor
if (string.IsNullOrEmpty(application.Permissions))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified permissions is an expensive operation.
@ -599,7 +599,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<TApplication, TAuthor
if (string.IsNullOrEmpty(application.PostLogoutRedirectUris))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified URIs is an expensive operation.
@ -675,7 +675,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<TApplication, TAuthor
if (string.IsNullOrEmpty(application.RedirectUris))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified URIs is an expensive operation.
@ -716,7 +716,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<TApplication, TAuthor
if (string.IsNullOrEmpty(application.Requirements))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified requirements is an expensive operation.

2
src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreAuthorizationStore.cs

@ -574,7 +574,7 @@ public class OpenIddictEntityFrameworkCoreAuthorizationStore<TAuthorization, TAp
if (string.IsNullOrEmpty(authorization.Scopes))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified scopes is an expensive operation.

2
src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreScopeStore.cs

@ -423,7 +423,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<TScope, TContext, TKey> : I
if (string.IsNullOrEmpty(scope.Resources))
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
// Note: parsing the stringified resources is an expensive operation.

8
src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbApplicationStore.cs

@ -323,7 +323,7 @@ public class OpenIddictMongoDbApplicationStore<TApplication> : IOpenIddictApplic
if (application.Permissions is not { Count: > 0 })
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
return new(application.Permissions.ToImmutableArray());
@ -340,7 +340,7 @@ public class OpenIddictMongoDbApplicationStore<TApplication> : IOpenIddictApplic
if (application.PostLogoutRedirectUris is not { Count: > 0 })
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
return new(application.PostLogoutRedirectUris.ToImmutableArray());
@ -381,7 +381,7 @@ public class OpenIddictMongoDbApplicationStore<TApplication> : IOpenIddictApplic
if (application.RedirectUris is not { Count: > 0 })
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
return new(application.RedirectUris.ToImmutableArray());
@ -397,7 +397,7 @@ public class OpenIddictMongoDbApplicationStore<TApplication> : IOpenIddictApplic
if (application.Requirements is not { Count: > 0 })
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
return new(application.Requirements.ToImmutableArray());

2
src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbAuthorizationStore.cs

@ -415,7 +415,7 @@ public class OpenIddictMongoDbAuthorizationStore<TAuthorization> : IOpenIddictAu
if (authorization.Scopes is not { Count: > 0 })
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
return new(authorization.Scopes.ToImmutableArray());

2
src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbScopeStore.cs

@ -302,7 +302,7 @@ public class OpenIddictMongoDbScopeStore<TScope> : IOpenIddictScopeStore<TScope>
if (scope.Resources is not { Count: > 0 })
{
return new([]);
return new(ImmutableArray<string>.Empty);
}
return new(scope.Resources.ToImmutableArray());

4
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Authentication.cs

@ -28,7 +28,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
{
public static class Authentication
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Authorization request extraction:
*/
@ -53,7 +53,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
ProcessPassthroughErrorResponse<ApplyAuthorizationResponseContext, RequireAuthorizationEndpointPassthroughEnabled>.Descriptor,
ProcessStatusCodePagesErrorResponse<ApplyAuthorizationResponseContext>.Descriptor,
ProcessLocalErrorResponse<ApplyAuthorizationResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for restoring cached requests from the request_id, if specified.

4
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Device.cs

@ -14,7 +14,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
{
public static class Device
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Device request extraction:
*/
@ -50,7 +50,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
ProcessStatusCodePagesErrorResponse<ApplyVerificationResponseContext>.Descriptor,
ProcessLocalErrorResponse<ApplyVerificationResponseContext>.Descriptor,
ProcessEmptyResponse<ApplyVerificationResponseContext>.Descriptor
];
]);
}
/// <summary>

4
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Discovery.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
{
public static class Discovery
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Configuration request extraction:
*/
@ -36,6 +36,6 @@ public static partial class OpenIddictServerAspNetCoreHandlers
AttachHttpResponseCode<ApplyCryptographyResponseContext>.Descriptor,
AttachWwwAuthenticateHeader<ApplyCryptographyResponseContext>.Descriptor,
ProcessJsonResponse<ApplyCryptographyResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Exchange.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
{
public static class Exchange
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token request extraction:
*/
@ -32,6 +32,6 @@ public static partial class OpenIddictServerAspNetCoreHandlers
AttachCacheControlHeader<ApplyTokenResponseContext>.Descriptor,
AttachWwwAuthenticateHeader<ApplyTokenResponseContext>.Descriptor,
ProcessJsonResponse<ApplyTokenResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Introspection.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
{
public static class Introspection
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Introspection request extraction:
*/
@ -26,6 +26,6 @@ public static partial class OpenIddictServerAspNetCoreHandlers
AttachHttpResponseCode<ApplyIntrospectionResponseContext>.Descriptor,
AttachWwwAuthenticateHeader<ApplyIntrospectionResponseContext>.Descriptor,
ProcessJsonResponse<ApplyIntrospectionResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Revocation.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
{
public static class Revocation
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Revocation request extraction:
*/
@ -27,6 +27,6 @@ public static partial class OpenIddictServerAspNetCoreHandlers
AttachCacheControlHeader<ApplyRevocationResponseContext>.Descriptor,
AttachWwwAuthenticateHeader<ApplyRevocationResponseContext>.Descriptor,
ProcessJsonResponse<ApplyRevocationResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Session.cs

@ -25,7 +25,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
{
public static class Session
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Logout request extraction:
*/
@ -50,7 +50,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
ProcessLocalErrorResponse<ApplyLogoutResponseContext>.Descriptor,
ProcessQueryResponse.Descriptor,
ProcessEmptyResponse<ApplyLogoutResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for restoring cached requests from the request_id, if specified.

4
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Userinfo.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
{
public static class Userinfo
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Userinfo request extraction:
*/
@ -31,6 +31,6 @@ public static partial class OpenIddictServerAspNetCoreHandlers
AttachWwwAuthenticateHeader<ApplyUserinfoResponseContext>.Descriptor,
ProcessChallengeErrorResponse<ApplyUserinfoResponseContext>.Descriptor,
ProcessJsonResponse<ApplyUserinfoResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.cs

@ -28,7 +28,7 @@ namespace OpenIddict.Server.AspNetCore;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictServerAspNetCoreHandlers
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Top-level request processing:
*/
@ -60,7 +60,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
.. Revocation.DefaultHandlers,
.. Session.DefaultHandlers,
.. Userinfo.DefaultHandlers
];
]);
/// <summary>
/// Contains the logic responsible for resolving the request URI from the ASP.NET Core environment.

4
src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionHandlers.Protection.cs

@ -21,7 +21,7 @@ public static partial class OpenIddictServerDataProtectionHandlers
{
public static class Protection
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token validation:
*/
@ -32,7 +32,7 @@ public static partial class OpenIddictServerDataProtectionHandlers
*/
OverrideGeneratedTokenFormat.Descriptor,
GenerateDataProtectionToken.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating tokens generated using Data Protection.

2
src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionHandlers.cs

@ -13,5 +13,5 @@ namespace OpenIddict.Server.DataProtection;
public static partial class OpenIddictServerDataProtectionHandlers
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; }
= [.. Protection.DefaultHandlers];
= ImmutableArray.Create([.. Protection.DefaultHandlers]);
}

4
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Authentication.cs

@ -26,7 +26,7 @@ public static partial class OpenIddictServerOwinHandlers
{
public static class Authentication
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Authorization request extraction:
*/
@ -52,7 +52,7 @@ public static partial class OpenIddictServerOwinHandlers
ProcessFragmentResponse.Descriptor,
ProcessPassthroughErrorResponse<ApplyAuthorizationResponseContext, RequireAuthorizationEndpointPassthroughEnabled>.Descriptor,
ProcessLocalErrorResponse<ApplyAuthorizationResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for restoring cached requests from the request_id, if specified.

4
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Device.cs

@ -14,7 +14,7 @@ public static partial class OpenIddictServerOwinHandlers
{
public static class Device
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Device request extraction:
*/
@ -53,7 +53,7 @@ public static partial class OpenIddictServerOwinHandlers
ProcessPassthroughErrorResponse<ApplyVerificationResponseContext, RequireVerificationEndpointPassthroughEnabled>.Descriptor,
ProcessLocalErrorResponse<ApplyVerificationResponseContext>.Descriptor,
ProcessEmptyResponse<ApplyVerificationResponseContext>.Descriptor
];
]);
}
/// <summary>

4
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Discovery.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictServerOwinHandlers
{
public static class Discovery
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Configuration request extraction:
*/
@ -40,6 +40,6 @@ public static partial class OpenIddictServerOwinHandlers
SuppressFormsAuthenticationRedirect<ApplyCryptographyResponseContext>.Descriptor,
AttachWwwAuthenticateHeader<ApplyCryptographyResponseContext>.Descriptor,
ProcessJsonResponse<ApplyCryptographyResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Exchange.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictServerOwinHandlers
{
public static class Exchange
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token request extraction:
*/
@ -34,6 +34,6 @@ public static partial class OpenIddictServerOwinHandlers
AttachCacheControlHeader<ApplyTokenResponseContext>.Descriptor,
AttachWwwAuthenticateHeader<ApplyTokenResponseContext>.Descriptor,
ProcessJsonResponse<ApplyTokenResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Introspection.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictServerOwinHandlers
{
public static class Introspection
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Introspection request extraction:
*/
@ -28,6 +28,6 @@ public static partial class OpenIddictServerOwinHandlers
SuppressFormsAuthenticationRedirect<ApplyIntrospectionResponseContext>.Descriptor,
AttachWwwAuthenticateHeader<ApplyIntrospectionResponseContext>.Descriptor,
ProcessJsonResponse<ApplyIntrospectionResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Revocation.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictServerOwinHandlers
{
public static class Revocation
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Revocation request extraction:
*/
@ -29,6 +29,6 @@ public static partial class OpenIddictServerOwinHandlers
AttachCacheControlHeader<ApplyRevocationResponseContext>.Descriptor,
AttachWwwAuthenticateHeader<ApplyRevocationResponseContext>.Descriptor,
ProcessJsonResponse<ApplyRevocationResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Session.cs

@ -24,7 +24,7 @@ public static partial class OpenIddictServerOwinHandlers
{
public static class Session
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Logout request extraction:
*/
@ -50,7 +50,7 @@ public static partial class OpenIddictServerOwinHandlers
ProcessLocalErrorResponse<ApplyLogoutResponseContext>.Descriptor,
ProcessQueryResponse.Descriptor,
ProcessEmptyResponse<ApplyLogoutResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for restoring cached requests from the request_id, if specified.

4
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Userinfo.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictServerOwinHandlers
{
public static class Userinfo
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Userinfo request extraction:
*/
@ -33,6 +33,6 @@ public static partial class OpenIddictServerOwinHandlers
AttachWwwAuthenticateHeader<ApplyUserinfoResponseContext>.Descriptor,
ProcessChallengeErrorResponse<ApplyUserinfoResponseContext>.Descriptor,
ProcessJsonResponse<ApplyUserinfoResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.cs

@ -23,7 +23,7 @@ namespace OpenIddict.Server.Owin;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictServerOwinHandlers
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Top-level request processing:
*/
@ -55,7 +55,7 @@ public static partial class OpenIddictServerOwinHandlers
.. Revocation.DefaultHandlers,
.. Session.DefaultHandlers,
.. Userinfo.DefaultHandlers
];
]);
/// <summary>
/// Contains the logic responsible for resolving the request URI from the OWIN environment.

2
src/OpenIddict.Server/OpenIddictServerHandlerDescriptor.cs

@ -31,7 +31,7 @@ public sealed class OpenIddictServerHandlerDescriptor
/// Gets the list of filters responsible for excluding the handler
/// from the activated handlers if it doesn't meet the criteria.
/// </summary>
public ImmutableArray<Type> FilterTypes { get; private set; } = [];
public ImmutableArray<Type> FilterTypes { get; private set; } = ImmutableArray<Type>.Empty;
/// <summary>
/// Gets the order assigned to the handler.

4
src/OpenIddict.Server/OpenIddictServerHandlers.Authentication.cs

@ -17,7 +17,7 @@ public static partial class OpenIddictServerHandlers
{
public static class Authentication
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Authorization request top-level processing:
*/
@ -65,7 +65,7 @@ public static partial class OpenIddictServerHandlers
InferResponseMode.Descriptor,
AttachResponseState.Descriptor,
AttachIssuer.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for extracting authorization requests and invoking the corresponding event handlers.

4
src/OpenIddict.Server/OpenIddictServerHandlers.Device.cs

@ -18,7 +18,7 @@ public static partial class OpenIddictServerHandlers
{
public static class Device
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Device request top-level processing:
*/
@ -61,7 +61,7 @@ public static partial class OpenIddictServerHandlers
* Verification request handling:
*/
AttachUserCodePrincipal.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for extracting device requests and invoking the corresponding event handlers.

4
src/OpenIddict.Server/OpenIddictServerHandlers.Discovery.cs

@ -18,7 +18,7 @@ public static partial class OpenIddictServerHandlers
{
public static class Discovery
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Configuration request top-level processing:
*/
@ -57,7 +57,7 @@ public static partial class OpenIddictServerHandlers
* Cryptography request handling:
*/
AttachSigningKeys.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for extracting configuration requests and invoking the corresponding event handlers.

4
src/OpenIddict.Server/OpenIddictServerHandlers.Exchange.cs

@ -21,7 +21,7 @@ public static partial class OpenIddictServerHandlers
{
public static class Exchange
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token request top-level processing:
*/
@ -65,7 +65,7 @@ public static partial class OpenIddictServerHandlers
* Token response handling:
*/
NormalizeErrorResponse.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for extracting token requests and invoking the corresponding event handlers.

4
src/OpenIddict.Server/OpenIddictServerHandlers.Introspection.cs

@ -21,7 +21,7 @@ public static partial class OpenIddictServerHandlers
{
public static class Introspection
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Introspection request top-level processing:
*/
@ -52,7 +52,7 @@ public static partial class OpenIddictServerHandlers
* Introspection response handling:
*/
NormalizeErrorResponse.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for extracting introspection requests and invoking the corresponding event handlers.

4
src/OpenIddict.Server/OpenIddictServerHandlers.Protection.cs

@ -22,7 +22,7 @@ public static partial class OpenIddictServerHandlers
{
public static class Protection
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token validation:
*/
@ -45,7 +45,7 @@ public static partial class OpenIddictServerHandlers
GenerateIdentityModelToken.Descriptor,
AttachTokenPayload.Descriptor,
BeautifyToken.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for resolving the validation parameters used to validate tokens.

4
src/OpenIddict.Server/OpenIddictServerHandlers.Revocation.cs

@ -15,7 +15,7 @@ public static partial class OpenIddictServerHandlers
{
public static class Revocation
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Revocation request top-level processing:
*/
@ -45,7 +45,7 @@ public static partial class OpenIddictServerHandlers
* Revocation response handling:
*/
NormalizeErrorResponse.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for extracting revocation requests and invoking the corresponding event handlers.

4
src/OpenIddict.Server/OpenIddictServerHandlers.Session.cs

@ -18,7 +18,7 @@ public static partial class OpenIddictServerHandlers
{
public static class Session
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Logout request top-level processing:
*/
@ -48,7 +48,7 @@ public static partial class OpenIddictServerHandlers
*/
AttachPostLogoutRedirectUri.Descriptor,
AttachResponseState.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for extracting logout requests and invoking the corresponding event handlers.

4
src/OpenIddict.Server/OpenIddictServerHandlers.Userinfo.cs

@ -15,7 +15,7 @@ public static partial class OpenIddictServerHandlers
{
public static class Userinfo
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Userinfo request top-level processing:
*/
@ -38,7 +38,7 @@ public static partial class OpenIddictServerHandlers
AttachPrincipal.Descriptor,
AttachAudiences.Descriptor,
AttachClaims.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for extracting userinfo requests and invoking the corresponding event handlers.

6
src/OpenIddict.Server/OpenIddictServerHandlers.cs

@ -22,7 +22,7 @@ namespace OpenIddict.Server;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictServerHandlers
{
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictServerHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Top-level request processing:
*/
@ -116,7 +116,7 @@ public static partial class OpenIddictServerHandlers
.. Revocation.DefaultHandlers,
.. Session.DefaultHandlers,
.. Userinfo.DefaultHandlers
];
]);
/// <summary>
/// Contains the logic responsible for inferring the endpoint type from the request URI.
@ -2497,7 +2497,7 @@ public static partial class OpenIddictServerHandlers
}
// Reset the audiences collection, as it's later set, based on the token type.
context.Principal.SetAudiences(ImmutableArray.Create<string>());
context.Principal.SetAudiences(ImmutableArray<string>.Empty);
return default;
}

4
src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlers.cs

@ -26,7 +26,7 @@ namespace OpenIddict.Validation.AspNetCore;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictValidationAspNetCoreHandlers
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Request top-level processing:
*/
@ -58,7 +58,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
AttachCacheControlHeader<ProcessErrorContext>.Descriptor,
AttachWwwAuthenticateHeader<ProcessErrorContext>.Descriptor,
ProcessChallengeErrorResponse<ProcessErrorContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for resolving the request URI from the ASP.NET Core environment.

4
src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionHandlers.Protection.cs

@ -21,12 +21,12 @@ public static partial class OpenIddictValidationDataProtectionHandlers
{
public static class Protection
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token validation:
*/
ValidateDataProtectionToken.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating tokens generated using Data Protection.

2
src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionHandlers.cs

@ -13,5 +13,5 @@ namespace OpenIddict.Validation.DataProtection;
public static partial class OpenIddictValidationDataProtectionHandlers
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; }
= [.. Protection.DefaultHandlers];
= ImmutableArray.Create([.. Protection.DefaultHandlers]);
}

4
src/OpenIddict.Validation.Owin/OpenIddictValidationOwinHandlers.cs

@ -22,7 +22,7 @@ namespace OpenIddict.Validation.Owin;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictValidationOwinHandlers
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Request top-level processing:
*/
@ -57,7 +57,7 @@ public static partial class OpenIddictValidationOwinHandlers
AttachCacheControlHeader<ProcessErrorContext>.Descriptor,
AttachWwwAuthenticateHeader<ProcessErrorContext>.Descriptor,
ProcessChallengeErrorResponse<ProcessErrorContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for resolving the request URI from the OWIN environment.

4
src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.Discovery.cs

@ -12,7 +12,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
{
public static class Discovery
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Configuration request processing:
*/
@ -56,6 +56,6 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
ExtractWwwAuthenticateHeader<ExtractCryptographyResponseContext>.Descriptor,
ValidateHttpResponse<ExtractCryptographyResponseContext>.Descriptor,
DisposeHttpResponse<ExtractCryptographyResponseContext>.Descriptor
];
]);
}
}

4
src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.Introspection.cs

@ -16,7 +16,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
{
public static class Introspection
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Introspection request processing:
*/
@ -39,7 +39,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
ExtractWwwAuthenticateHeader<ExtractIntrospectionResponseContext>.Descriptor,
ValidateHttpResponse<ExtractIntrospectionResponseContext>.Descriptor,
DisposeHttpResponse<ExtractIntrospectionResponseContext>.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for attaching the client credentials to the HTTP Authorization header.

2
src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.cs

@ -22,7 +22,7 @@ namespace OpenIddict.Validation.SystemNetHttp;
public static partial class OpenIddictValidationSystemNetHttpHandlers
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; }
= [.. Discovery.DefaultHandlers, .. Introspection.DefaultHandlers];
= ImmutableArray.Create([.. Discovery.DefaultHandlers, .. Introspection.DefaultHandlers]);
/// <summary>
/// Contains the logic responsible for creating and attaching a <see cref="HttpClient"/>.

2
src/OpenIddict.Validation/OpenIddictValidationHandlerDescriptor.cs

@ -31,7 +31,7 @@ public sealed class OpenIddictValidationHandlerDescriptor
/// Gets the list of filters responsible for excluding the handler
/// from the activated handlers if it doesn't meet the criteria.
/// </summary>
public ImmutableArray<Type> FilterTypes { get; private set; } = [];
public ImmutableArray<Type> FilterTypes { get; private set; } = ImmutableArray<Type>.Empty;
/// <summary>
/// Gets the order assigned to the handler.

4
src/OpenIddict.Validation/OpenIddictValidationHandlers.Discovery.cs

@ -15,7 +15,7 @@ public static partial class OpenIddictValidationHandlers
{
public static class Discovery
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Configuration response handling:
*/
@ -32,7 +32,7 @@ public static partial class OpenIddictValidationHandlers
ValidateWellKnownCryptographyParameters.Descriptor,
HandleCryptographyErrorResponse.Descriptor,
ExtractSigningKeys.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating the well-known parameters contained in the configuration response.

8
src/OpenIddict.Validation/OpenIddictValidationHandlers.Introspection.cs

@ -17,7 +17,7 @@ public static partial class OpenIddictValidationHandlers
{
public static class Introspection
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Introspection response handling:
*/
@ -29,7 +29,7 @@ public static partial class OpenIddictValidationHandlers
ValidateTokenUsage.Descriptor,
PopulateClaims.Descriptor,
MapInternalClaims.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for validating the well-known parameters contained in the introspection response.
@ -507,7 +507,7 @@ public static partial class OpenIddictValidationHandlers
string identifier when !string.IsNullOrEmpty(identifier)
=> ImmutableArray.Create(identifier),
_ => []
_ => ImmutableArray<string>.Empty
});
// Map the internal "oi_scp" claims from the standard, space-separated "scope" claim, if available.
@ -515,7 +515,7 @@ public static partial class OpenIddictValidationHandlers
{
string scope => scope.Split(Separators.Space, StringSplitOptions.RemoveEmptyEntries).ToImmutableArray(),
_ => []
_ => ImmutableArray<string>.Empty
});
return default;

4
src/OpenIddict.Validation/OpenIddictValidationHandlers.Protection.cs

@ -17,7 +17,7 @@ public static partial class OpenIddictValidationHandlers
{
public static class Protection
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Token validation:
*/
@ -38,7 +38,7 @@ public static partial class OpenIddictValidationHandlers
*/
AttachSecurityCredentials.Descriptor,
GenerateIdentityModelToken.Descriptor
];
]);
/// <summary>
/// Contains the logic responsible for resolving the validation parameters used to validate tokens.

4
src/OpenIddict.Validation/OpenIddictValidationHandlers.cs

@ -18,7 +18,7 @@ namespace OpenIddict.Validation;
[EditorBrowsable(EditorBrowsableState.Never)]
public static partial class OpenIddictValidationHandlers
{
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = [
public static ImmutableArray<OpenIddictValidationHandlerDescriptor> DefaultHandlers { get; } = ImmutableArray.Create([
/*
* Authentication processing:
*/
@ -52,7 +52,7 @@ public static partial class OpenIddictValidationHandlers
.. Discovery.DefaultHandlers,
.. Introspection.DefaultHandlers,
.. Protection.DefaultHandlers
];
]);
/// <summary>
/// Contains the logic responsible for selecting the token types that should be validated.

48
test/OpenIddict.Abstractions.Tests/Primitives/OpenIddictExtensionsTests.cs

@ -2084,7 +2084,7 @@ public class OpenIddictExtensionsTests
var identity = (ClaimsIdentity) null!;
// Act and assert
var exception = Assert.Throws<ArgumentNullException>(() => identity.AddClaims("type", []));
var exception = Assert.Throws<ArgumentNullException>(() => identity.AddClaims("type", ImmutableArray<string>.Empty));
Assert.Equal("identity", exception.ParamName);
}
@ -2096,7 +2096,7 @@ public class OpenIddictExtensionsTests
var principal = (ClaimsPrincipal) null!;
// Act and assert
var exception = Assert.Throws<ArgumentNullException>(() => principal.AddClaims("type", []));
var exception = Assert.Throws<ArgumentNullException>(() => principal.AddClaims("type", ImmutableArray<string>.Empty));
Assert.Equal("principal", exception.ParamName);
}
@ -2108,7 +2108,7 @@ public class OpenIddictExtensionsTests
var principal = new ClaimsPrincipal();
// Act and assert
var exception = Assert.Throws<ArgumentException>(() => principal.AddClaims("type", ["value1", "value2"]));
var exception = Assert.Throws<ArgumentException>(() => principal.AddClaims("type", ImmutableArray.Create("value1", "value2")));
Assert.Equal("principal", exception.ParamName);
Assert.StartsWith(SR.GetResourceString(SR.ID0286), exception.Message);
@ -2123,7 +2123,7 @@ public class OpenIddictExtensionsTests
var identity = new ClaimsIdentity();
// Act and assert
var exception = Assert.Throws<ArgumentException>(() => identity.AddClaims(type, []));
var exception = Assert.Throws<ArgumentException>(() => identity.AddClaims(type, ImmutableArray<string>.Empty));
Assert.Equal("type", exception.ParamName);
Assert.StartsWith(SR.GetResourceString(SR.ID0184), exception.Message);
@ -2138,7 +2138,7 @@ public class OpenIddictExtensionsTests
var principal = new ClaimsPrincipal(new ClaimsIdentity());
// Act and assert
var exception = Assert.Throws<ArgumentException>(() => principal.AddClaims(type, []));
var exception = Assert.Throws<ArgumentException>(() => principal.AddClaims(type, ImmutableArray<string>.Empty));
Assert.Equal("type", exception.ParamName);
Assert.StartsWith(SR.GetResourceString(SR.ID0184), exception.Message);
@ -2151,7 +2151,7 @@ public class OpenIddictExtensionsTests
var identity = new ClaimsIdentity();
// Act
identity.AddClaims("type", ["value1", "value2"], "issuer");
identity.AddClaims("type", ImmutableArray.Create("value1", "value2"), "issuer");
// Assert
var claims = identity.FindAll("type").ToArray();
@ -2171,7 +2171,7 @@ public class OpenIddictExtensionsTests
var principal = new ClaimsPrincipal(new ClaimsIdentity());
// Act
principal.AddClaims("type", ["value1", "value2"], "issuer");
principal.AddClaims("type", ImmutableArray.Create("value1", "value2"), "issuer");
// Assert
var claims = principal.FindAll("type").ToArray();
@ -2191,10 +2191,10 @@ public class OpenIddictExtensionsTests
var identity = new ClaimsIdentity();
// Act
identity.AddClaims("TYPE", ["value1", "value2"]);
identity.AddClaims("TYPE", ImmutableArray.Create("value1", "value2"));
// Assert
Assert.Equal<string>(["value1", "value2"], identity.GetClaims("type"));
Assert.Equal<string>(ImmutableArray.Create("value1", "value2"), identity.GetClaims("type"));
}
[Fact]
@ -2204,10 +2204,10 @@ public class OpenIddictExtensionsTests
var principal = new ClaimsPrincipal(new ClaimsIdentity());
// Act
principal.AddClaims("TYPE", ["value1", "value2"]);
principal.AddClaims("TYPE", ImmutableArray.Create("value1", "value2"));
// Assert
Assert.Equal<string>(["value1", "value2"], principal.GetClaims("type"));
Assert.Equal<string>(ImmutableArray.Create("value1", "value2"), principal.GetClaims("type"));
}
[Fact]
@ -3612,7 +3612,7 @@ public class OpenIddictExtensionsTests
var identity = (ClaimsIdentity) null!;
// Act and assert
var exception = Assert.Throws<ArgumentNullException>(() => identity.SetClaims("type", []));
var exception = Assert.Throws<ArgumentNullException>(() => identity.SetClaims("type", ImmutableArray<string>.Empty));
Assert.Equal("identity", exception.ParamName);
}
@ -3624,7 +3624,7 @@ public class OpenIddictExtensionsTests
var principal = (ClaimsPrincipal) null!;
// Act and assert
var exception = Assert.Throws<ArgumentNullException>(() => principal.SetClaims("type", []));
var exception = Assert.Throws<ArgumentNullException>(() => principal.SetClaims("type", ImmutableArray<string>.Empty));
Assert.Equal("principal", exception.ParamName);
}
@ -3636,7 +3636,7 @@ public class OpenIddictExtensionsTests
var principal = new ClaimsPrincipal();
// Act and assert
var exception = Assert.Throws<ArgumentException>(() => principal.SetClaims("type", ["value1", "value2"]));
var exception = Assert.Throws<ArgumentException>(() => principal.SetClaims("type", ImmutableArray.Create("value1", "value2")));
Assert.Equal("principal", exception.ParamName);
Assert.StartsWith(SR.GetResourceString(SR.ID0286), exception.Message);
@ -3651,7 +3651,7 @@ public class OpenIddictExtensionsTests
var identity = new ClaimsIdentity();
// Act and assert
var exception = Assert.Throws<ArgumentException>(() => identity.SetClaims(type, []));
var exception = Assert.Throws<ArgumentException>(() => identity.SetClaims(type, ImmutableArray<string>.Empty));
Assert.Equal("type", exception.ParamName);
Assert.StartsWith(SR.GetResourceString(SR.ID0184), exception.Message);
@ -3666,7 +3666,7 @@ public class OpenIddictExtensionsTests
var principal = new ClaimsPrincipal(new ClaimsIdentity());
// Act and assert
var exception = Assert.Throws<ArgumentException>(() => principal.SetClaims(type, []));
var exception = Assert.Throws<ArgumentException>(() => principal.SetClaims(type, ImmutableArray<string>.Empty));
Assert.Equal("type", exception.ParamName);
Assert.StartsWith(SR.GetResourceString(SR.ID0184), exception.Message);
@ -3679,7 +3679,7 @@ public class OpenIddictExtensionsTests
var identity = new ClaimsIdentity();
// Act
identity.SetClaims("type", ["value1", "value2"], "issuer");
identity.SetClaims("type", ImmutableArray.Create("value1", "value2"), "issuer");
// Assert
var claims = identity.FindAll("type").ToArray();
@ -3699,7 +3699,7 @@ public class OpenIddictExtensionsTests
var principal = new ClaimsPrincipal(new ClaimsIdentity());
// Act
principal.SetClaims("type", ["value1", "value2"], "issuer");
principal.SetClaims("type", ImmutableArray.Create("value1", "value2"), "issuer");
// Assert
var claims = principal.FindAll("type").ToArray();
@ -3718,10 +3718,10 @@ public class OpenIddictExtensionsTests
var identity = new ClaimsIdentity();
// Act
identity.SetClaims("TYPE", ["value1", "value2"]);
identity.SetClaims("TYPE", ImmutableArray.Create("value1", "value2"));
// Assert
Assert.Equal<string>(["value1", "value2"], identity.GetClaims("type"));
Assert.Equal<string>(ImmutableArray.Create("value1", "value2"), identity.GetClaims("type"));
}
[Fact]
@ -3731,10 +3731,10 @@ public class OpenIddictExtensionsTests
var principal = new ClaimsPrincipal(new ClaimsIdentity());
// Act
principal.SetClaims("TYPE", ["value1", "value2"]);
principal.SetClaims("TYPE", ImmutableArray.Create("value1", "value2"));
// Assert
Assert.Equal<string>(["value1", "value2"], principal.GetClaims("type"));
Assert.Equal<string>(ImmutableArray.Create("value1", "value2"), principal.GetClaims("type"));
}
[Fact]
@ -3745,7 +3745,7 @@ public class OpenIddictExtensionsTests
identity.AddClaim("type", "value");
// Act
identity.SetClaims("type", []);
identity.SetClaims("type", ImmutableArray<string>.Empty);
// Assert
Assert.Empty(identity.GetClaims("type"));
@ -3759,7 +3759,7 @@ public class OpenIddictExtensionsTests
principal.AddClaim("type", "value");
// Act
principal.SetClaims("type", []);
principal.SetClaims("type", ImmutableArray<string>.Empty);
// Assert
Assert.Empty(principal.GetClaims("type"));

6
test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Authentication.cs

@ -1202,7 +1202,7 @@ public abstract partial class OpenIddictServerIntegrationTests
.ReturnsAsync(true);
mock.Setup(manager => manager.GetPermissionsAsync(application, It.IsAny<CancellationToken>()))
.ReturnsAsync([]);
.ReturnsAsync(ImmutableArray<string>.Empty);
});
await using var server = await CreateServerAsync(options =>
@ -1378,7 +1378,7 @@ public abstract partial class OpenIddictServerIntegrationTests
.ReturnsAsync(true);
mock.Setup(manager => manager.GetPermissionsAsync(application, It.IsAny<CancellationToken>()))
.ReturnsAsync([]);
.ReturnsAsync(ImmutableArray<string>.Empty);
});
await using var server = await CreateServerAsync(options =>
@ -1425,7 +1425,7 @@ public abstract partial class OpenIddictServerIntegrationTests
.ReturnsAsync(application);
mock.Setup(manager => manager.GetPermissionsAsync(application, It.IsAny<CancellationToken>()))
.ReturnsAsync(["rst:" + type]);
.ReturnsAsync(ImmutableArray.Create("rst:" + type));
mock.Setup(manager => manager.ValidateRedirectUriAsync(application, "http://www.fabrikam.com/path", It.IsAny<CancellationToken>()))
.ReturnsAsync(true);

8
test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Exchange.cs

@ -2816,7 +2816,7 @@ public abstract partial class OpenIddictServerIntegrationTests
public async Task HandleTokenRequest_RevokesTokensWhenAuthorizationCodeIsAlreadyRedeemed()
{
// Arrange
ImmutableArray<OpenIddictToken> tokens = [new(), new(), new()];
var tokens = ImmutableArray.Create(new OpenIddictToken(), new OpenIddictToken(), new OpenIddictToken());
var manager = CreateTokenManager(mock =>
{
@ -2915,7 +2915,7 @@ public abstract partial class OpenIddictServerIntegrationTests
public async Task HandleTokenRequest_RevokesTokensWhenRefreshTokenIsAlreadyRedeemedAndLeewayIsNull()
{
// Arrange
ImmutableArray<OpenIddictToken> tokens = [new(), new(), new()];
var tokens = ImmutableArray.Create(new OpenIddictToken(), new OpenIddictToken(), new OpenIddictToken());
var manager = CreateTokenManager(mock =>
{
@ -3006,7 +3006,7 @@ public abstract partial class OpenIddictServerIntegrationTests
public async Task HandleTokenRequest_RevokesTokensWhenRefreshTokenIsAlreadyRedeemedAndCannotBeReused()
{
// Arrange
ImmutableArray<OpenIddictToken> tokens = [new(), new(), new()];
var tokens = ImmutableArray.Create(new OpenIddictToken(), new OpenIddictToken(), new OpenIddictToken());
var manager = CreateTokenManager(mock =>
{
@ -3097,7 +3097,7 @@ public abstract partial class OpenIddictServerIntegrationTests
public async Task HandleTokenRequest_DoesNotRevokeTokensWhenRefreshTokenIsAlreadyRedeemedAndCanBeReused()
{
// Arrange
ImmutableArray<OpenIddictToken> tokens = [new(), new(), new()];
var tokens = ImmutableArray.Create(new OpenIddictToken(), new OpenIddictToken(), new OpenIddictToken());
var manager = CreateTokenManager(mock =>
{

7
test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Protection.cs

@ -6,6 +6,7 @@
* the license and the contributors participating to this project.
*/
using System.Collections.Immutable;
using System.Security.Claims;
using Xunit;
using static OpenIddict.Server.OpenIddictServerEvents;
@ -296,7 +297,7 @@ public abstract partial class OpenIddictServerIntegrationTests
context.Principal = new ClaimsPrincipal(new ClaimsIdentity("Bearer"))
.SetTokenType(TokenTypeHints.AccessToken)
.SetClaim(Claims.Subject, "Bob le Magnifique")
.SetClaims(Claims.Audience, ["Fabrikam", "Contoso"]);
.SetClaims(Claims.Audience, ImmutableArray.Create("Fabrikam", "Contoso"));
return default;
});
@ -346,7 +347,7 @@ public abstract partial class OpenIddictServerIntegrationTests
context.Principal = new ClaimsPrincipal(new ClaimsIdentity("Bearer"))
.SetTokenType(TokenTypeHints.AccessToken)
.SetClaim(Claims.Subject, "Bob le Magnifique")
.SetClaims(Claims.Scope, [Scopes.OpenId, Scopes.Profile]);
.SetClaims(Claims.Scope, ImmutableArray.Create(Scopes.OpenId, Scopes.Profile));
return default;
});
@ -444,7 +445,7 @@ public abstract partial class OpenIddictServerIntegrationTests
context.Principal = new ClaimsPrincipal(new ClaimsIdentity("Bearer"))
.SetTokenType(TokenTypeHints.AccessToken)
.SetClaim(Claims.Subject, "Bob le Magnifique")
.SetClaims(Claims.Scope, [Scopes.OpenId, Scopes.Profile]);
.SetClaims(Claims.Scope, ImmutableArray.Create(Scopes.OpenId, Scopes.Profile));
return default;
});

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save