Browse Source

Polyfill ValueTask.CompletedTask and ValueTask<TResult>.CompletedTask

pull/2395/head
Kévin Chalet 2 months ago
parent
commit
a0f39b4b5c
  1. 3
      Directory.Build.props
  2. 2
      Directory.Build.targets
  3. 1
      sandbox/OpenIddict.Sandbox.AspNet.Server/Startup.cs
  4. 91
      shared/OpenIddict.Extensions/OpenIddictHelpers.cs
  5. 170
      shared/OpenIddict.Extensions/OpenIddictPolyfills.cs
  6. 1
      src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs
  7. 1
      src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs
  8. 2
      src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlers.Authentication.cs
  9. 2
      src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlers.Session.cs
  10. 63
      src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreHandlers.cs
  11. 17
      src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionHandlers.Protection.cs
  12. 2
      src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlers.Authentication.cs
  13. 2
      src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlers.Session.cs
  14. 67
      src/OpenIddict.Client.Owin/OpenIddictClientOwinHandlers.cs
  15. 1
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationActivation.cs
  16. 1
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationConfiguration.cs
  17. 1
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHandlers.Authentication.cs
  18. 1
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHandlers.Session.cs
  19. 87
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHandlers.cs
  20. 1
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHelpers.cs
  21. 1
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHttpListener.cs
  22. 1
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationMarshal.cs
  23. 1
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationPipeListener.cs
  24. 1
      src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationPlatformCallback.cs
  25. 2
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.Userinfo.cs
  26. 59
      src/OpenIddict.Client.SystemNetHttp/OpenIddictClientSystemNetHttpHandlers.cs
  27. 2
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Authentication.cs
  28. 5
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Device.cs
  29. 13
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Discovery.cs
  30. 17
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Exchange.cs
  31. 5
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Introspection.cs
  32. 8
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Protection.cs
  33. 12
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Revocation.cs
  34. 18
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs
  35. 87
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.cs
  36. 1
      src/OpenIddict.Client/OpenIddictClientBuilder.cs
  37. 1
      src/OpenIddict.Client/OpenIddictClientConfiguration.cs
  38. 1
      src/OpenIddict.Client/OpenIddictClientDispatcher.cs
  39. 25
      src/OpenIddict.Client/OpenIddictClientHandlers.Authentication.cs
  40. 21
      src/OpenIddict.Client/OpenIddictClientHandlers.Device.cs
  41. 111
      src/OpenIddict.Client/OpenIddictClientHandlers.Discovery.cs
  42. 8
      src/OpenIddict.Client/OpenIddictClientHandlers.Exchange.cs
  43. 35
      src/OpenIddict.Client/OpenIddictClientHandlers.Introspection.cs
  44. 47
      src/OpenIddict.Client/OpenIddictClientHandlers.Protection.cs
  45. 8
      src/OpenIddict.Client/OpenIddictClientHandlers.Revocation.cs
  46. 5
      src/OpenIddict.Client/OpenIddictClientHandlers.Session.cs
  47. 14
      src/OpenIddict.Client/OpenIddictClientHandlers.Userinfo.cs
  48. 353
      src/OpenIddict.Client/OpenIddictClientHandlers.cs
  49. 1
      src/OpenIddict.Client/OpenIddictClientRetriever.cs
  50. 1
      src/OpenIddict.Client/OpenIddictClientService.cs
  51. 1
      src/OpenIddict.Core/Managers/OpenIddictApplicationManager.cs
  52. 1
      src/OpenIddict.Core/Managers/OpenIddictAuthorizationManager.cs
  53. 1
      src/OpenIddict.Core/Managers/OpenIddictTokenManager.cs
  54. 1
      src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkHelpers.cs
  55. 42
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkApplicationStore.cs
  56. 17
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkAuthorizationStore.cs
  57. 22
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkScopeStore.cs
  58. 21
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkTokenStore.cs
  59. 1
      src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreHelpers.cs
  60. 42
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreApplicationStore.cs
  61. 17
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreAuthorizationStore.cs
  62. 22
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreScopeStore.cs
  63. 21
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreTokenStore.cs
  64. 42
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbApplicationStore.cs
  65. 25
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbAuthorizationStore.cs
  66. 22
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbScopeStore.cs
  67. 31
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbTokenStore.cs
  68. 1
      src/OpenIddict.Quartz/OpenIddictQuartzJob.cs
  69. 12
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Authentication.cs
  70. 4
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Device.cs
  71. 12
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Session.cs
  72. 75
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.cs
  73. 17
      src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionHandlers.Protection.cs
  74. 12
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Authentication.cs
  75. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Device.cs
  76. 12
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Session.cs
  77. 79
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.cs
  78. 1
      src/OpenIddict.Server/OpenIddictServerBuilder.cs
  79. 1
      src/OpenIddict.Server/OpenIddictServerConfiguration.cs
  80. 1
      src/OpenIddict.Server/OpenIddictServerDispatcher.cs
  81. 225
      src/OpenIddict.Server/OpenIddictServerHandlers.Authentication.cs
  82. 17
      src/OpenIddict.Server/OpenIddictServerHandlers.Device.cs
  83. 33
      src/OpenIddict.Server/OpenIddictServerHandlers.Discovery.cs
  84. 155
      src/OpenIddict.Server/OpenIddictServerHandlers.Exchange.cs
  85. 32
      src/OpenIddict.Server/OpenIddictServerHandlers.Introspection.cs
  86. 51
      src/OpenIddict.Server/OpenIddictServerHandlers.Protection.cs
  87. 30
      src/OpenIddict.Server/OpenIddictServerHandlers.Revocation.cs
  88. 27
      src/OpenIddict.Server/OpenIddictServerHandlers.Session.cs
  89. 10
      src/OpenIddict.Server/OpenIddictServerHandlers.Userinfo.cs
  90. 91
      src/OpenIddict.Server/OpenIddictServerHandlers.cs
  91. 34
      src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlers.cs
  92. 11
      src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionHandlers.Protection.cs
  93. 41
      src/OpenIddict.Validation.Owin/OpenIddictValidationOwinHandlers.cs
  94. 35
      src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpHandlers.cs
  95. 1
      src/OpenIddict.Validation/OpenIddictValidationBuilder.cs
  96. 1
      src/OpenIddict.Validation/OpenIddictValidationConfiguration.cs
  97. 1
      src/OpenIddict.Validation/OpenIddictValidationDispatcher.cs
  98. 49
      src/OpenIddict.Validation/OpenIddictValidationHandlers.Discovery.cs
  99. 35
      src/OpenIddict.Validation/OpenIddictValidationHandlers.Introspection.cs
  100. 51
      src/OpenIddict.Validation/OpenIddictValidationHandlers.Protection.cs

3
Directory.Build.props

@ -3,7 +3,7 @@
<Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
<PropertyGroup>
<LangVersion>13.0</LangVersion>
<LangVersion>14.0</LangVersion>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisLevel>9.0</AnalysisLevel>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
@ -218,6 +218,7 @@
<ItemGroup Condition=" '$(IncludeInternalExtensions)' == 'true' ">
<Compile Include="$(MSBuildThisFileDirectory)shared\OpenIddict.Extensions\*.cs" Visible="false" />
<Using Include="OpenIddict.Extensions" />
</ItemGroup>
</Project>

2
Directory.Build.targets

@ -58,6 +58,7 @@
<DefineConstants>$(DefineConstants);SUPPORTS_AUTHORIZATION_MIDDLEWARE</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_BCL_ASYNC_ENUMERABLE</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_BULK_DBSET_OPERATIONS</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_CHUNK_LINQ_EXTENSION</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_DBSET_VALUETASK_FINDASYNC</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_ENDPOINT_ROUTING</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_ENVIRONMENT_PROCESS_PATH</DefineConstants>
@ -77,6 +78,7 @@
<DefineConstants>$(DefineConstants);SUPPORTS_TASK_WAIT_ASYNC</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_TEXT_ELEMENT_ENUMERATOR</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_TIME_PROVIDER</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_VALUETASK_COMPLETED_TASK</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_WINFORMS_TASK_DIALOG</DefineConstants>
<DefineConstants>$(DefineConstants);SUPPORTS_ZLIB_COMPRESSION</DefineConstants>
</PropertyGroup>

1
sandbox/OpenIddict.Sandbox.AspNet.Server/Startup.cs

@ -1,5 +1,4 @@
using System;
using System.Globalization;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Mvc;

91
shared/OpenIddict.Extensions/OpenIddictHelpers.cs

@ -23,36 +23,6 @@ namespace OpenIddict.Extensions;
/// </summary>
internal static class OpenIddictHelpers
{
/// <summary>
/// Generates a sequence of non-overlapping adjacent buffers over the source sequence.
/// </summary>
/// <typeparam name="TSource">The source sequence element type.</typeparam>
/// <param name="source">The source sequence.</param>
/// <param name="count">The number of elements for allocated buffers.</param>
/// <returns>A sequence of buffers containing source sequence elements.</returns>
public static IEnumerable<List<TSource>> Buffer<TSource>(this IEnumerable<TSource> source, int count)
{
List<TSource>? buffer = null;
foreach (var element in source)
{
buffer ??= [];
buffer.Add(element);
if (buffer.Count == count)
{
yield return buffer;
buffer = null;
}
}
if (buffer is not null)
{
yield return buffer;
}
}
/// <summary>
/// Determines whether the specified array contains at least one value present in the specified set.
/// </summary>
@ -82,54 +52,6 @@ internal static class OpenIddictHelpers
return false;
}
#if !SUPPORTS_TASK_WAIT_ASYNC
/// <summary>
/// Waits until the specified task returns a result or the cancellation token is signaled.
/// </summary>
/// <param name="task">The task.</param>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> that can be used to abort the operation.</param>
/// <returns>
/// A <see cref="Task"/> that can be used to monitor the asynchronous operation.</returns>
/// <exception cref="OperationCanceledException">The specified <paramref name="cancellationToken"/> is signaled.</exception>
public static async Task WaitAsync(this Task task, CancellationToken cancellationToken)
{
var source = new TaskCompletionSource<bool>(TaskCreationOptions.None);
using (cancellationToken.Register(static state => ((TaskCompletionSource<bool>) state!).SetResult(true), source))
{
if (await Task.WhenAny(task, source.Task) == source.Task)
{
throw new OperationCanceledException(cancellationToken);
}
await task;
}
}
/// <summary>
/// Waits until the specified task returns a result or the cancellation token is signaled.
/// </summary>
/// <param name="task">The task.</param>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> that can be used to abort the operation.</param>
/// <returns>
/// A <see cref="Task"/> that can be used to monitor the asynchronous operation.</returns>
/// <exception cref="OperationCanceledException">The specified <paramref name="cancellationToken"/> is signaled.</exception>
public static async Task<T> WaitAsync<T>(this Task<T> task, CancellationToken cancellationToken)
{
var source = new TaskCompletionSource<bool>(TaskCreationOptions.None);
using (cancellationToken.Register(static state => ((TaskCompletionSource<bool>) state!).SetResult(true), source))
{
if (await Task.WhenAny(task, source.Task) == source.Task)
{
throw new OperationCanceledException(cancellationToken);
}
return await task;
}
}
#endif
/// <summary>
/// Determines whether the specified <paramref name="exception"/> is considered fatal.
/// </summary>
@ -166,19 +88,6 @@ internal static class OpenIddictHelpers
}
}
#if !SUPPORTS_TOHASHSET_LINQ_EXTENSION
/// <summary>
/// Creates a new <see cref="HashSet{T}"/> instance and imports the elements present in the specified source.
/// </summary>
/// <typeparam name="TSource">The type of the elements present in the collection.</typeparam>
/// <param name="source">The source collection.</param>
/// <param name="comparer">The comparer to use.</param>
/// <returns>A new <see cref="HashSet{T}"/> instance and imports the elements present in the specified source.</returns>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is <see langword="null"/>.</exception>
public static HashSet<TSource> ToHashSet<TSource>(this IEnumerable<TSource> source, IEqualityComparer<TSource>? comparer)
=> new(source ?? throw new ArgumentNullException(nameof(source)), comparer);
#endif
/// <summary>
/// Computes an absolute URI from the specified <paramref name="left"/> and <paramref name="right"/> URIs.
/// Note: if the <paramref name="right"/> URI is already absolute, it is directly returned.

170
shared/OpenIddict.Extensions/OpenIddictPolyfills.cs

@ -0,0 +1,170 @@
/*
* Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
* See https://github.com/openiddict/openiddict-core for more information concerning
* the license and the contributors participating to this project.
*/
using System.Diagnostics;
namespace OpenIddict.Extensions;
/// <summary>
/// Exposes common polyfills used by the OpenIddict assemblies.
/// </summary>
internal static class OpenIddictPolyfills
{
extension<TSource>(IEnumerable<TSource> source)
{
#if !SUPPORTS_CHUNK_LINQ_EXTENSION
/// <summary>
/// Split the elements of a sequence into chunks of size at most <paramref name="size"/>.
/// </summary>
/// <remarks>
/// Every chunk except the last will be of size <paramref name="size"/>.
/// The last chunk will contain the remaining elements and may be of a smaller size.
/// </remarks>
/// <param name="size">Maximum size of each chunk.</param>
/// <returns>
/// An <see cref="IEnumerable{T}"/> that contains the elements of the input
/// sequence split into chunks of size <paramref name="size"/>.
/// </returns>
public IEnumerable<TSource[]> Chunk(int size)
{
// Note: this polyfill was directly copied from .NET's source code:
// https://github.com/dotnet/runtime/blob/main/src/libraries/System.Linq/src/System/Linq/Chunk.cs.
using IEnumerator<TSource> enumerator = source.GetEnumerator();
if (enumerator.MoveNext())
{
var count = Math.Min(size, 4);
int index;
do
{
var array = new TSource[count];
array[0] = enumerator.Current;
index = 1;
if (size != array.Length)
{
for (; index < size && enumerator.MoveNext(); index++)
{
if (index >= array.Length)
{
count = (int) Math.Min((uint) size, 2 * (uint) array.Length);
Array.Resize(ref array, count);
}
array[index] = enumerator.Current;
}
}
else
{
var local = array;
Debug.Assert(local.Length == size);
for (; (uint) index < (uint) local.Length && enumerator.MoveNext(); index++)
{
local[index] = enumerator.Current;
}
}
if (index != array.Length)
{
Array.Resize(ref array, index);
}
yield return array;
}
while (index >= size && enumerator.MoveNext());
}
}
#endif
#if !SUPPORTS_TOHASHSET_LINQ_EXTENSION
/// <summary>
/// Creates a new <see cref="HashSet{T}"/> instance and imports the elements present in the specified source.
/// </summary>
/// <param name="comparer">The comparer to use.</param>
/// <returns>A new <see cref="HashSet{T}"/> instance and imports the elements present in the specified source.</returns>
public HashSet<TSource> ToHashSet(IEqualityComparer<TSource>? comparer) => new(source, comparer);
#endif
}
extension(Task task)
{
#if !SUPPORTS_TASK_WAIT_ASYNC
/// <summary>
/// Waits until the specified task returns a result or the cancellation token is signaled.
/// </summary>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> that can be used to abort the operation.</param>
/// <returns>
/// A <see cref="Task"/> that can be used to monitor the asynchronous operation.</returns>
/// <exception cref="OperationCanceledException">The specified <paramref name="cancellationToken"/> is signaled.</exception>
public async Task WaitAsync(CancellationToken cancellationToken)
{
var source = new TaskCompletionSource<bool>(TaskCreationOptions.None);
using (cancellationToken.Register(static state => ((TaskCompletionSource<bool>) state!).SetResult(true), source))
{
if (await Task.WhenAny(task, source.Task) == source.Task)
{
throw new OperationCanceledException(cancellationToken);
}
await task;
}
}
#endif
}
extension<TResult>(Task<TResult> task)
{
#if !SUPPORTS_TASK_WAIT_ASYNC
/// <summary>
/// Waits until the specified task returns a result or the cancellation token is signaled.
/// </summary>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> that can be used to abort the operation.</param>
/// <returns>
/// A <see cref="Task"/> that can be used to monitor the asynchronous operation.</returns>
/// <exception cref="OperationCanceledException">The specified <paramref name="cancellationToken"/> is signaled.</exception>
public async Task<TResult> WaitAsync(CancellationToken cancellationToken)
{
var source = new TaskCompletionSource<bool>(TaskCreationOptions.None);
using (cancellationToken.Register(static state => ((TaskCompletionSource<bool>) state!).SetResult(true), source))
{
if (await Task.WhenAny(task, source.Task) == source.Task)
{
throw new OperationCanceledException(cancellationToken);
}
return await task;
}
}
#endif
}
extension(ValueTask)
{
#if !SUPPORTS_VALUETASK_COMPLETED_TASK
/// <summary>
/// Gets a task that has already completed successfully.
/// </summary>
public static ValueTask CompletedTask => default;
#endif
}
extension<TResult>(ValueTask<TResult>)
{
#if !SUPPORTS_VALUETASK_COMPLETED_TASK
/// <summary>
/// Gets a task that has already completed successfully.
/// </summary>
public static ValueTask<TResult> CompletedTask => default;
#endif
}
}

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

@ -14,7 +14,6 @@ using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Json.Nodes;
using Microsoft.Extensions.Primitives;
using OpenIddict.Extensions;
namespace OpenIddict.Abstractions;

1
src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs

@ -12,7 +12,6 @@ using System.Runtime.InteropServices;
using System.Text.Json;
using System.Text.Json.Nodes;
using Microsoft.Extensions.Primitives;
using OpenIddict.Extensions;
namespace OpenIddict.Abstractions;

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

@ -100,7 +100,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -100,7 +100,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -20,7 +20,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using Microsoft.Net.Http.Headers;
using OpenIddict.Extensions;
using Properties = OpenIddict.Client.AspNetCore.OpenIddictClientAspNetCoreConstants.Properties;
namespace OpenIddict.Client.AspNetCore;
@ -120,7 +119,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
context.BaseUri = CreateUri(UriHelper.BuildAbsolute(request.Scheme, host, request.PathBase));
context.RequestUri = CreateUri(UriHelper.BuildAbsolute(request.Scheme, host, request.PathBase, request.Path, request.QueryString));
return default;
return ValueTask.CompletedTask;
// Note: the BCL System.Uri class has strict rules (e.g it rejects specific characters and enforces a
// limit of 65519 characters for the complete URI representation). To ensure no exception is thrown if the
@ -168,10 +167,10 @@ public static partial class OpenIddictClientAspNetCoreHandlers
description: SR.GetResourceString(SR.ID2083),
uri: SR.FormatID8000(SR.ID2083));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -213,10 +212,10 @@ public static partial class OpenIddictClientAspNetCoreHandlers
description: SR.FormatID2081(HeaderNames.Host),
uri: SR.FormatID8000(SR.ID2081));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -330,7 +329,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0402));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -364,7 +363,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0377));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -437,7 +436,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
description: SR.GetResourceString(SR.ID2129),
uri: SR.FormatID8000(SR.ID2129));
return default;
return ValueTask.CompletedTask;
}
try
@ -451,7 +450,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
description: SR.GetResourceString(SR.ID2163),
uri: SR.FormatID8000(SR.ID2163));
return default;
return ValueTask.CompletedTask;
}
// Extract the length of the request forgery protection.
@ -463,7 +462,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
description: SR.GetResourceString(SR.ID2163),
uri: SR.FormatID8000(SR.ID2163));
return default;
return ValueTask.CompletedTask;
}
// Note: since the correlation cookie is not protected against tampering, an unexpected
@ -480,7 +479,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
description: SR.GetResourceString(SR.ID2163),
uri: SR.FormatID8000(SR.ID2163));
return default;
return ValueTask.CompletedTask;
}
// Return a response header asking the browser to delete the state cookie.
@ -488,7 +487,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
// Note: when deleting a cookie, the same options used when creating it MUST be specified.
request.HttpContext.Response.Cookies.Delete(name, builder.Build(request.HttpContext));
return default;
return ValueTask.CompletedTask;
}
}
@ -522,7 +521,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0402));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -629,7 +628,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
}
}
return default;
return ValueTask.CompletedTask;
static string? GetProperty(AuthenticationProperties properties, string name)
=> properties.Items.TryGetValue(name, out string? value) ? value : null;
@ -672,7 +671,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0364));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -704,7 +703,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
// If an explicit response type was specified, don't overwrite it.
if (!string.IsNullOrEmpty(context.ResponseMode))
{
return default;
return ValueTask.CompletedTask;
}
// Note: in most cases, the query response mode will be used as it offers the best compatibility and,
@ -715,7 +714,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
// the remote server, the response types are taken into account when selecting the best response mode.
if (context.ResponseType?.Split(Separators.Space) is not IList<string> { Count: > 0 } types)
{
return default;
return ValueTask.CompletedTask;
}
context.ResponseMode = (
@ -764,7 +763,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
_ => null
};
return default;
return ValueTask.CompletedTask;
}
}
@ -857,7 +856,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
// Add the correlation cookie to the response headers.
response.Cookies.Append(name, Base64UrlEncoder.Encode(payload), options);
return default;
return ValueTask.CompletedTask;
}
}
@ -954,7 +953,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
}
}
return default;
return ValueTask.CompletedTask;
static string? GetProperty(AuthenticationProperties properties, string name)
=> properties.Items.TryGetValue(name, out string? value) ? value : null;
@ -997,7 +996,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0365));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1089,7 +1088,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
// Add the correlation cookie to the response headers.
response.Cookies.Append(name, Base64UrlEncoder.Encode(payload), options);
return default;
return ValueTask.CompletedTask;
}
}
@ -1123,7 +1122,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
context.SkipRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1166,7 +1165,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
_ => 400
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1205,7 +1204,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
response.Headers[HeaderNames.Pragma] = "no-cache";
response.Headers[HeaderNames.Expires] = "Thu, 01 Jan 1970 00:00:00 GMT";
return default;
return ValueTask.CompletedTask;
}
}
@ -1243,12 +1242,12 @@ public static partial class OpenIddictClientAspNetCoreHandlers
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
context.SkipRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1288,7 +1287,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
// Determine if the status code pages middleware has been enabled for this request.
@ -1297,7 +1296,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
var feature = response.HttpContext.Features.Get<IStatusCodePagesFeature>();
if (feature is not { Enabled: true })
{
return default;
return ValueTask.CompletedTask;
}
// Mark the request as fully handled to prevent the other OpenIddict client handlers
@ -1305,7 +1304,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
// to rewrite the response using the logic defined by the developer when registering it.
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1412,7 +1411,7 @@ public static partial class OpenIddictClientAspNetCoreHandlers
context.Logger.LogInformation(6145, SR.GetResourceString(SR.ID6145));
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -10,7 +10,6 @@ using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using static OpenIddict.Client.DataProtection.OpenIddictClientDataProtectionConstants.Purposes;
using static OpenIddict.Client.OpenIddictClientHandlers.Protection;
using Schemes = OpenIddict.Client.DataProtection.OpenIddictClientDataProtectionConstants.Purposes.Schemes;
@ -61,13 +60,13 @@ public static partial class OpenIddictClientDataProtectionHandlers
// If a principal was already attached, don't overwrite it.
if (context.Principal is not null)
{
return default;
return ValueTask.CompletedTask;
}
// If a specific token format is expected, return immediately if it doesn't match the expected value.
if (context.TokenFormat is not null and not TokenFormats.Private.DataProtection)
{
return default;
return ValueTask.CompletedTask;
}
// Note: ASP.NET Core Data Protection tokens created by the default implementation always start
@ -84,7 +83,7 @@ public static partial class OpenIddictClientDataProtectionHandlers
"Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtectionProvider",
StringComparison.Ordinal))
{
return default;
return ValueTask.CompletedTask;
}
// Note: unlike the equivalent handler in the server stack, the logic used here
@ -108,14 +107,14 @@ public static partial class OpenIddictClientDataProtectionHandlers
description: SR.GetResourceString(SR.ID2004),
uri: SR.FormatID8000(SR.ID2004));
return default;
return ValueTask.CompletedTask;
}
context.Principal = principal;
context.Logger.LogTrace(6152, SR.GetResourceString(SR.ID6152), context.Token, context.Principal.Claims);
return default;
return ValueTask.CompletedTask;
ClaimsPrincipal? ValidateToken(string type)
{
@ -196,7 +195,7 @@ public static partial class OpenIddictClientDataProtectionHandlers
_ => context.TokenFormat // Don't override the format if the token type is not supported.
};
return default;
return ValueTask.CompletedTask;
}
}
@ -232,7 +231,7 @@ public static partial class OpenIddictClientDataProtectionHandlers
// If an access token was already attached by another handler, don't overwrite it.
if (!string.IsNullOrEmpty(context.Token))
{
return default;
return ValueTask.CompletedTask;
}
// Create a Data Protection protector using the provider registered in the options.
@ -259,7 +258,7 @@ public static partial class OpenIddictClientDataProtectionHandlers
context.Logger.LogTrace(6016, SR.GetResourceString(SR.ID6016), context.TokenType,
context.Token, context.Principal.Claims);
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -90,7 +90,7 @@ public static partial class OpenIddictClientOwinHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -88,7 +88,7 @@ public static partial class OpenIddictClientOwinHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -16,7 +16,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using Owin;
using static OpenIddict.Client.Owin.OpenIddictClientOwinConstants;
using Properties = OpenIddict.Client.Owin.OpenIddictClientOwinConstants.Properties;
@ -117,7 +116,7 @@ public static partial class OpenIddictClientOwinHandlers
context.BaseUri = CreateUri(request.Scheme + Uri.SchemeDelimiter + host + request.PathBase);
context.RequestUri = CreateUri(request.Scheme + Uri.SchemeDelimiter + host + request.PathBase + request.Path + request.QueryString);
return default;
return ValueTask.CompletedTask;
// Note: the BCL System.Uri class has strict rules (e.g it rejects specific characters and enforces a
// limit of 65519 characters for the complete URI representation). To ensure no exception is thrown if the
@ -160,7 +159,7 @@ public static partial class OpenIddictClientOwinHandlers
// Don't require that transport security be used if the request is not handled by OpenIddict.
if (context.EndpointType is OpenIddictClientEndpointType.Unknown)
{
return default;
return ValueTask.CompletedTask;
}
if (!request.IsSecure)
@ -170,10 +169,10 @@ public static partial class OpenIddictClientOwinHandlers
description: SR.GetResourceString(SR.ID2083),
uri: SR.FormatID8000(SR.ID2083));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -216,10 +215,10 @@ public static partial class OpenIddictClientOwinHandlers
description: SR.FormatID2081(Headers.Host),
uri: SR.FormatID8000(SR.ID2081));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -339,7 +338,7 @@ public static partial class OpenIddictClientOwinHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0402));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -373,7 +372,7 @@ public static partial class OpenIddictClientOwinHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0377));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -448,7 +447,7 @@ public static partial class OpenIddictClientOwinHandlers
description: SR.GetResourceString(SR.ID2129),
uri: SR.FormatID8000(SR.ID2129));
return default;
return ValueTask.CompletedTask;
}
try
@ -462,7 +461,7 @@ public static partial class OpenIddictClientOwinHandlers
description: SR.GetResourceString(SR.ID2163),
uri: SR.FormatID8000(SR.ID2163));
return default;
return ValueTask.CompletedTask;
}
// Extract the length of the request forgery protection.
@ -474,7 +473,7 @@ public static partial class OpenIddictClientOwinHandlers
description: SR.GetResourceString(SR.ID2163),
uri: SR.FormatID8000(SR.ID2163));
return default;
return ValueTask.CompletedTask;
}
// Note: since the correlation cookie is not protected against tampering, an unexpected
@ -491,7 +490,7 @@ public static partial class OpenIddictClientOwinHandlers
description: SR.GetResourceString(SR.ID2163),
uri: SR.FormatID8000(SR.ID2163));
return default;
return ValueTask.CompletedTask;
}
// Return a response header asking the browser to delete the state cookie.
@ -506,7 +505,7 @@ public static partial class OpenIddictClientOwinHandlers
Secure = options.Secure
});
return default;
return ValueTask.CompletedTask;
}
}
@ -540,7 +539,7 @@ public static partial class OpenIddictClientOwinHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0402));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -578,7 +577,7 @@ public static partial class OpenIddictClientOwinHandlers
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
if (properties is not { Dictionary.Count: > 0 })
{
return default;
return ValueTask.CompletedTask;
}
context.CodeChallengeMethod = GetProperty(properties, Properties.CodeChallengeMethod);
@ -660,7 +659,7 @@ public static partial class OpenIddictClientOwinHandlers
}
}
return default;
return ValueTask.CompletedTask;
static string? GetProperty(AuthenticationProperties properties, string name)
=> properties.Dictionary.TryGetValue(name, out string? value) ? value : null;
@ -703,7 +702,7 @@ public static partial class OpenIddictClientOwinHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0364));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -735,7 +734,7 @@ public static partial class OpenIddictClientOwinHandlers
// If an explicit response type was specified, don't overwrite it.
if (!string.IsNullOrEmpty(context.ResponseMode))
{
return default;
return ValueTask.CompletedTask;
}
// Note: in most cases, the query response mode will be used as it offers the best compatibility and,
@ -746,7 +745,7 @@ public static partial class OpenIddictClientOwinHandlers
// the remote server, the response types are taken into account when selecting the best response mode.
if (context.ResponseType?.Split(Separators.Space) is not IList<string> { Count: > 0 } types)
{
return default;
return ValueTask.CompletedTask;
}
context.ResponseMode = (
@ -795,7 +794,7 @@ public static partial class OpenIddictClientOwinHandlers
_ => null
};
return default;
return ValueTask.CompletedTask;
}
}
@ -896,7 +895,7 @@ public static partial class OpenIddictClientOwinHandlers
Expires = context.StateTokenPrincipal.GetExpirationDate()?.UtcDateTime
});
return default;
return ValueTask.CompletedTask;
}
}
@ -934,7 +933,7 @@ public static partial class OpenIddictClientOwinHandlers
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
if (properties is not { Dictionary.Count: > 0 })
{
return default;
return ValueTask.CompletedTask;
}
context.IdentityTokenHint = GetProperty(properties, Properties.IdentityTokenHint);
@ -1006,7 +1005,7 @@ public static partial class OpenIddictClientOwinHandlers
}
}
return default;
return ValueTask.CompletedTask;
static string? GetProperty(AuthenticationProperties properties, string name)
=> properties.Dictionary.TryGetValue(name, out string? value) ? value : null;
@ -1049,7 +1048,7 @@ public static partial class OpenIddictClientOwinHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0365));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1149,7 +1148,7 @@ public static partial class OpenIddictClientOwinHandlers
Expires = context.StateTokenPrincipal.GetExpirationDate()?.UtcDateTime
});
return default;
return ValueTask.CompletedTask;
}
}
@ -1183,7 +1182,7 @@ public static partial class OpenIddictClientOwinHandlers
context.SkipRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1226,7 +1225,7 @@ public static partial class OpenIddictClientOwinHandlers
_ => 400
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1279,7 +1278,7 @@ public static partial class OpenIddictClientOwinHandlers
properties : response.Context.Authentication.AuthenticationResponseChallenge?.Properties ?? new());
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1324,7 +1323,7 @@ public static partial class OpenIddictClientOwinHandlers
TrySuppressFormsAuthenticationRedirect(response.Environment);
}
return default;
return ValueTask.CompletedTask;
static void TrySuppressFormsAuthenticationRedirect(IDictionary<string, object> environment)
{
@ -1385,7 +1384,7 @@ public static partial class OpenIddictClientOwinHandlers
response.Headers[Headers.Pragma] = "no-cache";
response.Headers[Headers.Expires] = "Thu, 01 Jan 1970 00:00:00 GMT";
return default;
return ValueTask.CompletedTask;
}
}
@ -1423,12 +1422,12 @@ public static partial class OpenIddictClientOwinHandlers
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
context.SkipRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1535,7 +1534,7 @@ public static partial class OpenIddictClientOwinHandlers
context.Logger.LogInformation(6145, SR.GetResourceString(SR.ID6145));
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

1
src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationActivation.cs

@ -5,7 +5,6 @@
*/
using System.ComponentModel;
using OpenIddict.Extensions;
namespace OpenIddict.Client.SystemIntegration;

1
src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationConfiguration.cs

@ -14,7 +14,6 @@ using System.Text;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using static OpenIddict.Client.SystemIntegration.OpenIddictClientSystemIntegrationAuthenticationMode;
namespace OpenIddict.Client.SystemIntegration;

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

@ -9,7 +9,6 @@ using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Text;
using Microsoft.Extensions.Primitives;
using OpenIddict.Extensions;
#if SUPPORTS_ANDROID
using Android.Content;

1
src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHandlers.Session.cs

@ -9,7 +9,6 @@ using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Text;
using Microsoft.Extensions.Primitives;
using OpenIddict.Extensions;
#if SUPPORTS_ANDROID
using Android.Content;

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

@ -16,7 +16,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using Microsoft.Net.Http.Headers;
using OpenIddict.Extensions;
using static OpenIddict.Client.SystemIntegration.OpenIddictClientSystemIntegrationConstants;
namespace OpenIddict.Client.SystemIntegration;
@ -154,7 +153,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0390))
};
return default;
return ValueTask.CompletedTask;
}
}
@ -192,7 +191,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0375))
};
return default;
return ValueTask.CompletedTask;
}
}
@ -230,7 +229,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0393))
};
return default;
return ValueTask.CompletedTask;
}
}
@ -263,13 +262,13 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
// If the base or request URIs couldn't be resolved, don't try to infer the endpoint type.
if (context is not { BaseUri.IsAbsoluteUri: true, RequestUri.IsAbsoluteUri: true })
{
return default;
return ValueTask.CompletedTask;
}
// If an endpoint was already inferred by the generic handler, don't override it.
if (context.EndpointType is not OpenIddictClientEndpointType.Unknown)
{
return default;
return ValueTask.CompletedTask;
}
context.EndpointType =
@ -277,7 +276,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
Matches(context.Options.PostLogoutRedirectionEndpointUris) ? OpenIddictClientEndpointType.PostLogoutRedirection :
OpenIddictClientEndpointType.Unknown;
return default;
return ValueTask.CompletedTask;
bool Matches(IReadOnlyList<Uri> uris)
{
@ -351,10 +350,10 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
response.StatusCode = (int) HttpStatusCode.NotFound;
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -398,7 +397,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
description: SR.GetResourceString(SR.ID2084),
uri: SR.FormatID8000(SR.ID2084));
return default;
return ValueTask.CompletedTask;
}
context.Transaction.Request = request.QueryString.AllKeys.Length switch
@ -407,7 +406,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => new OpenIddictRequest(request.QueryString)
};
return default;
return ValueTask.CompletedTask;
}
}
@ -555,7 +554,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
context.Transaction.Request = new OpenIddictRequest(parameters);
return default;
return ValueTask.CompletedTask;
}
}
@ -591,7 +590,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
context.Transaction.Request = new OpenIddictRequest(callback.Parameters);
return default;
return ValueTask.CompletedTask;
}
}
@ -739,7 +738,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => (context.Configuration, context.Registration)
};
return default;
return ValueTask.CompletedTask;
}
}
@ -785,7 +784,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => context.StateToken
};
return default;
return ValueTask.CompletedTask;
}
}
@ -832,7 +831,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => context.StateTokenPrincipal
};
return default;
return ValueTask.CompletedTask;
}
}
@ -879,7 +878,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1020,12 +1019,12 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
description: SR.GetResourceString(SR.ID2139),
uri: SR.FormatID8000(SR.ID2139));
return default;
return ValueTask.CompletedTask;
}
context.RequestForgeryProtection = protection;
return default;
return ValueTask.CompletedTask;
}
}
@ -1073,7 +1072,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => (context.AuthorizationCode, context.FrontchannelAccessToken, context.FrontchannelIdentityToken)
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1120,7 +1119,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => context.FrontchannelIdentityTokenPrincipal
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1167,7 +1166,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => context.FrontchannelAccessTokenPrincipal
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1214,7 +1213,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => context.AuthorizationCodePrincipal
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1260,7 +1259,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => context.TokenResponse
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1308,7 +1307,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => (context.BackchannelAccessToken, context.BackchannelIdentityToken, context.RefreshToken)
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1355,7 +1354,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => context.BackchannelIdentityTokenPrincipal
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1402,7 +1401,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => context.BackchannelAccessTokenPrincipal
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1449,7 +1448,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => context.RefreshTokenPrincipal
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1495,7 +1494,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => (context.UserInfoResponse, context.UserInfoTokenPrincipal, context.UserInfoToken)
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1540,7 +1539,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => context.MergedPrincipal
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1583,7 +1582,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0380));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1626,7 +1625,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0381));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1657,7 +1656,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
context.BaseUri ??= context.Options.ClientUri;
return default;
return ValueTask.CompletedTask;
}
}
@ -1947,7 +1946,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
// should be redirected to a different instance using inter-process communication.
context.StateTokenPrincipal.SetClaim(Claims.Private.InstanceId, _options.CurrentValue.InstanceIdentifier);
return default;
return ValueTask.CompletedTask;
}
}
@ -1997,7 +1996,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0378));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2028,7 +2027,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
context.BaseUri ??= context.Options.ClientUri;
return default;
return ValueTask.CompletedTask;
}
}
@ -2129,7 +2128,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
// should be redirected to a different instance using inter-process communication.
context.StateTokenPrincipal.SetClaim(Claims.Private.InstanceId, _options.CurrentValue.InstanceIdentifier);
return default;
return ValueTask.CompletedTask;
}
}
@ -2179,7 +2178,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0378));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2236,10 +2235,10 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_lifetime.StopApplication();
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2282,7 +2281,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
_ => 400
};
return default;
return ValueTask.CompletedTask;
}
}
@ -2321,7 +2320,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
response.Headers[Headers.Pragma] = "no-cache";
response.Headers[Headers.Expires] = "Thu, 01 Jan 1970 00:00:00 GMT";
return default;
return ValueTask.CompletedTask;
}
}
@ -2358,7 +2357,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
// Note: this logic applies to both successful and errored responses.
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -2394,7 +2393,7 @@ public static partial class OpenIddictClientSystemIntegrationHandlers
// Note: this logic applies to both successful and errored responses.
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

1
src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHelpers.cs

@ -12,7 +12,6 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security.Principal;
using OpenIddict.Extensions;
#if SUPPORTS_ANDROID
using Android.Content;

1
src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationHttpListener.cs

@ -12,7 +12,6 @@ using System.Runtime.InteropServices;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
namespace OpenIddict.Client.SystemIntegration;

1
src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationMarshal.cs

@ -7,7 +7,6 @@
using System.Collections.Concurrent;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using OpenIddict.Extensions;
namespace OpenIddict.Client.SystemIntegration;

1
src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationPipeListener.cs

@ -10,7 +10,6 @@ using System.Runtime.InteropServices;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
namespace OpenIddict.Client.SystemIntegration;

1
src/OpenIddict.Client.SystemIntegration/OpenIddictClientSystemIntegrationPlatformCallback.cs

@ -6,7 +6,6 @@
using System.Collections.Immutable;
using System.ComponentModel;
using OpenIddict.Extensions;
namespace OpenIddict.Client.SystemIntegration;

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

@ -80,7 +80,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// Remove the access token from the request payload to ensure it's not sent twice.
context.Request.AccessToken = null;
return default;
return ValueTask.CompletedTask;
}
}

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

@ -16,7 +16,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using static OpenIddict.Client.SystemNetHttp.OpenIddictClientSystemNetHttpConstants;
namespace OpenIddict.Client.SystemNetHttp;
@ -91,7 +90,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// If an explicit client authentication method was attached, don't overwrite it.
if (!string.IsNullOrEmpty(context.TokenEndpointClientAuthenticationMethod))
{
return default;
return ValueTask.CompletedTask;
}
context.TokenEndpointClientAuthenticationMethod = (
@ -175,7 +174,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
_ => null
};
return default;
return ValueTask.CompletedTask;
}
}
@ -225,7 +224,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
(context.Configuration.MtlsUserInfoEndpoint ?? context.Configuration.UserInfoEndpoint) is not Uri endpoint ||
!string.Equals(endpoint.Scheme, Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase))
{
return default;
return ValueTask.CompletedTask;
}
if (context.TokenEndpointClientAuthenticationMethod is ClientAuthenticationMethods.TlsClientAuth &&
@ -240,7 +239,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
context.UserInfoEndpointTokenBindingMethods.Add(TokenBindingMethods.Private.SelfSignedTlsClientCertificate);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -278,7 +277,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// If an explicit client authentication method was attached, don't overwrite it.
if (!string.IsNullOrEmpty(context.DeviceAuthorizationEndpointClientAuthenticationMethod))
{
return default;
return ValueTask.CompletedTask;
}
context.DeviceAuthorizationEndpointClientAuthenticationMethod = (
@ -370,7 +369,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
_ => null
};
return default;
return ValueTask.CompletedTask;
}
}
@ -408,7 +407,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// If an explicit client authentication method was attached, don't overwrite it.
if (!string.IsNullOrEmpty(context.PushedAuthorizationEndpointClientAuthenticationMethod))
{
return default;
return ValueTask.CompletedTask;
}
context.PushedAuthorizationEndpointClientAuthenticationMethod = (
@ -501,7 +500,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
_ => null
};
return default;
return ValueTask.CompletedTask;
}
}
@ -539,7 +538,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// If an explicit client authentication method was attached, don't overwrite it.
if (!string.IsNullOrEmpty(context.IntrospectionEndpointClientAuthenticationMethod))
{
return default;
return ValueTask.CompletedTask;
}
context.IntrospectionEndpointClientAuthenticationMethod = (
@ -623,7 +622,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
_ => null
};
return default;
return ValueTask.CompletedTask;
}
}
@ -661,7 +660,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// If an explicit client authentication method was attached, don't overwrite it.
if (!string.IsNullOrEmpty(context.RevocationEndpointClientAuthenticationMethod))
{
return default;
return ValueTask.CompletedTask;
}
context.RevocationEndpointClientAuthenticationMethod = (
@ -745,7 +744,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
_ => null
};
return default;
return ValueTask.CompletedTask;
}
}
@ -834,7 +833,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
context.Transaction.SetProperty(typeof(HttpClient).FullName!, _factory.CreateClient(builder.ToString()) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID0174)));
return default;
return ValueTask.CompletedTask;
}
}
@ -866,7 +865,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
context.Transaction.SetProperty(typeof(HttpRequestMessage).FullName!,
new HttpRequestMessage(HttpMethod.Get, context.RemoteUri));
return default;
return ValueTask.CompletedTask;
}
}
@ -898,7 +897,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
context.Transaction.SetProperty(typeof(HttpRequestMessage).FullName!,
new HttpRequestMessage(HttpMethod.Post, context.RemoteUri));
return default;
return ValueTask.CompletedTask;
}
}
@ -945,7 +944,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
request.VersionPolicy = client.DefaultVersionPolicy;
#endif
#endif
return default;
return ValueTask.CompletedTask;
}
}
@ -986,7 +985,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// that require using HTTP compression can register a custom event handler to send an
// Accept-Encoding header containing the supported algorithms (e.g GZip/Deflate/Brotli).
return default;
return ValueTask.CompletedTask;
}
}
@ -1040,7 +1039,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
productName: assembly.Name!,
productVersion: assembly.Version!.ToString()));
return default;
return ValueTask.CompletedTask;
}
}
@ -1081,7 +1080,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// Attach the contact address specified in the options, if available.
request.Headers.From = _options.CurrentValue.ContactAddress?.ToString();
return default;
return ValueTask.CompletedTask;
}
}
@ -1135,7 +1134,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
context.Transaction.Request.ClientId = context.Transaction.Request.ClientSecret = null;
}
return default;
return ValueTask.CompletedTask;
static string? EscapeDataString(string? value)
=> value is not null ? Uri.EscapeDataString(value).Replace("%20", "+") : null;
@ -1175,7 +1174,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
if (context.Transaction.Request.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// For GET requests, attach the request parameters to the query string by default.
@ -1198,7 +1197,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
select new KeyValuePair<string?, string?>(parameter.Key, value));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1300,7 +1299,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// Remove the request from the transaction properties.
context.Transaction.SetProperty<HttpRequestMessage>(typeof(HttpRequestMessage).FullName!, null);
return default;
return ValueTask.CompletedTask;
}
}
@ -1556,7 +1555,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// Don't overwrite the response if one was already provided.
if (context.Transaction.Response is not null)
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to System.Net.Http requests. If the HTTP response cannot be resolved,
@ -1566,14 +1565,14 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
if (response.Headers.WwwAuthenticate.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
context.Transaction.Response = new OpenIddictResponse(response.Headers.WwwAuthenticate
.Where(static header => !string.IsNullOrEmpty(header.Parameter))
.SelectMany(static header => ParseParameters(header.Parameter!)));
return default;
return ValueTask.CompletedTask;
static IEnumerable<KeyValuePair<string, string?>> ParseParameters(string parameter)
{
@ -1685,7 +1684,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// Don't overwrite the response if one was already provided.
if (context.Transaction.Response is not null)
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to System.Net.Http requests. If the HTTP response cannot be resolved,
@ -1700,7 +1699,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
context.Transaction.Response = new OpenIddictResponse();
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1808,7 +1807,7 @@ public static partial class OpenIddictClientSystemNetHttpHandlers
// Remove the response from the transaction properties.
context.Transaction.SetProperty<HttpResponseMessage>(typeof(HttpResponseMessage).FullName!, null);
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -57,7 +57,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Request.ResponseType = null;
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -6,7 +6,6 @@
using System.Collections.Immutable;
using System.Text.Json;
using OpenIddict.Extensions;
using static OpenIddict.Client.WebIntegration.OpenIddictClientWebIntegrationConstants;
namespace OpenIddict.Client.WebIntegration;
@ -49,7 +48,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
if (context.Response is null)
{
return default;
return ValueTask.CompletedTask;
}
// Note: Google doesn't return a standard "verification_uri" parameter
@ -91,7 +90,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Response["expire_in"] = null;
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -5,7 +5,6 @@
*/
using System.Collections.Immutable;
using OpenIddict.Extensions;
using static OpenIddict.Client.OpenIddictClientHandlers.Discovery;
using static OpenIddict.Client.WebIntegration.OpenIddictClientWebIntegrationConstants;
@ -76,7 +75,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.Response[Metadata.Issuer]
};
return default;
return ValueTask.CompletedTask;
}
}
@ -160,7 +159,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Configuration.GrantTypesSupported.Add(GrantTypes.RefreshToken);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -206,7 +205,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Configuration.CodeChallengeMethodsSupported.Add(CodeChallengeMethods.Sha256);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -258,7 +257,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Configuration.ScopesSupported.Add(Scopes.OpenId);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -373,7 +372,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
ClientAuthenticationMethods.PrivateKeyJwt);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -453,7 +452,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
new Uri("https://api-m.sandbox.paypal.com/v1/oauth2/token/userinfo", UriKind.Absolute);
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -13,7 +13,6 @@ using System.Net.Http.Json;
using System.Text;
using System.Text.Json;
using Microsoft.Extensions.Primitives;
using OpenIddict.Extensions;
using static OpenIddict.Client.SystemNetHttp.OpenIddictClientSystemNetHttpConstants;
using static OpenIddict.Client.SystemNetHttp.OpenIddictClientSystemNetHttpHandlerFilters;
using static OpenIddict.Client.SystemNetHttp.OpenIddictClientSystemNetHttpHandlers;
@ -115,7 +114,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Request.RedirectUri = null;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -176,7 +175,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Request.ClientId = context.Request.ClientSecret = null;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -228,7 +227,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Request.ClientId = null;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -264,7 +263,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
if (request.RequestUri is null)
{
return default;
return ValueTask.CompletedTask;
}
// By default, Deezer returns non-standard token responses formatted as formurl-encoded
@ -290,7 +289,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
});
}
return default;
return ValueTask.CompletedTask;
}
}
@ -340,7 +339,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => request.Content
};
return default;
return ValueTask.CompletedTask;
}
}
@ -370,7 +369,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
if (context.Response is null)
{
return default;
return ValueTask.CompletedTask;
}
// Note: when using the client credentials grant, Dailymotion returns a "refresh_token"
@ -433,7 +432,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Response["id_token"] = null;
}
return default;
return ValueTask.CompletedTask;
}
}
}

5
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Introspection.cs

@ -6,7 +6,6 @@
using System.Collections.Immutable;
using System.Text.Json;
using OpenIddict.Extensions;
using static OpenIddict.Client.WebIntegration.OpenIddictClientWebIntegrationConstants;
namespace OpenIddict.Client.WebIntegration;
@ -49,7 +48,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
if (context.Response is null)
{
return default;
return ValueTask.CompletedTask;
}
// Note: NetSuite returns the "scope" parameter as a non-standard JSON array of strings,
@ -73,7 +72,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Response.Scope = string.Join(" ", scopes);
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -54,7 +54,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
// In this case, don't amend the default token validation parameters.
if (context.Registration is null)
{
return default;
return ValueTask.CompletedTask;
}
context.TokenValidationParameters.ValidateIssuer = context.Registration.ProviderType switch
@ -81,7 +81,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.TokenValidationParameters.ValidateIssuer
};
return default;
return ValueTask.CompletedTask;
}
}
@ -112,7 +112,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
// In this case, don't amend the default security token descriptor.
if (context.Registration is null)
{
return default;
return ValueTask.CompletedTask;
}
context.SecurityTokenDescriptor.TokenType = context.Registration.ProviderType switch
@ -130,7 +130,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.SecurityTokenDescriptor.TokenType
};
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -82,7 +82,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => request.Content
};
return default;
return ValueTask.CompletedTask;
}
}
@ -144,7 +144,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Request.ClientSecret = null;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -184,7 +184,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => request.Method
};
return default;
return ValueTask.CompletedTask;
}
}
@ -236,7 +236,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
request.Headers.Authorization = new AuthenticationHeaderValue(Schemes.Bearer, token);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -272,7 +272,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
if (response.Content is null)
{
return default;
return ValueTask.CompletedTask;
}
// Some providers are known to return invalid or incorrect media types, which prevents
@ -296,7 +296,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => response.Content.Headers.ContentType
};
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -82,7 +82,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => request.Method
};
return default;
return ValueTask.CompletedTask;
}
}
@ -145,7 +145,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
request.Headers.Add("Client-ID", context.Registration.ClientId);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -210,7 +210,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
request.Headers.Authorization?.Parameter);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -251,7 +251,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Request.ClientId = context.Registration.ClientId;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -301,7 +301,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => request.Content
};
return default;
return ValueTask.CompletedTask;
}
}
@ -337,7 +337,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
if (response.Content is null)
{
return default;
return ValueTask.CompletedTask;
}
// Some providers are known to return invalid or incorrect media types, which prevents
@ -367,7 +367,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => response.Content.Headers.ContentType
};
return default;
return ValueTask.CompletedTask;
}
}
@ -488,7 +488,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.Response
};
return default;
return ValueTask.CompletedTask;
}
}
@ -536,7 +536,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -10,7 +10,6 @@ using System.Diagnostics;
using System.Security.Claims;
using System.Text;
using System.Text.Json;
using OpenIddict.Extensions;
using static OpenIddict.Client.WebIntegration.OpenIddictClientWebIntegrationConstants;
namespace OpenIddict.Client.WebIntegration;
@ -114,7 +113,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
description: SR.FormatID2029("hmac"),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
var builder = new StringBuilder();
@ -162,7 +161,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
description: SR.FormatID2052("hmac"),
uri: SR.FormatID8000(SR.ID2052));
return default;
return ValueTask.CompletedTask;
}
}
@ -173,11 +172,11 @@ public static partial class OpenIddictClientWebIntegrationHandlers
description: SR.FormatID2052("hmac"),
uri: SR.FormatID8000(SR.ID2052));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -237,7 +236,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => SR.FormatID8000(SR.ID2152)
});
return default;
return ValueTask.CompletedTask;
}
else if (context.Registration.ProviderType is ProviderTypes.Deezer)
@ -266,7 +265,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => SR.FormatID8000(SR.ID2152)
});
return default;
return ValueTask.CompletedTask;
}
}
@ -292,7 +291,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => SR.FormatID8000(SR.ID2152)
});
return default;
return ValueTask.CompletedTask;
}
}
@ -307,7 +306,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
description: SR.GetResourceString(SR.ID2149),
uri: SR.FormatID8000(SR.ID2149));
return default;
return ValueTask.CompletedTask;
}
}
@ -321,11 +320,11 @@ public static partial class OpenIddictClientWebIntegrationHandlers
description: SR.GetResourceString(SR.ID2149),
uri: SR.FormatID8000(SR.ID2149));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -367,7 +366,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
description: SR.FormatID2029("shop"),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// Resolve the shop name from the authentication properties.
@ -389,7 +388,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
description: SR.FormatID2052("shop"),
uri: SR.FormatID8000(SR.ID2052));
return default;
return ValueTask.CompletedTask;
}
}
@ -404,7 +403,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
description: SR.FormatID2029("device_id"),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// Store the device identifier as an authentication property
@ -424,7 +423,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
description: SR.FormatID2029("location"),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// Ensure the specified location corresponds to well-known region.
@ -435,7 +434,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
description: SR.FormatID2052("location"),
uri: SR.FormatID8000(SR.ID2052));
return default;
return ValueTask.CompletedTask;
}
// Store the validated location as an authentication property
@ -443,7 +442,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Properties[Zoho.Properties.Location] = location;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -487,7 +486,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.TokenEndpointClientAuthenticationMethod
};
return default;
return ValueTask.CompletedTask;
}
}
@ -573,7 +572,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.TokenEndpoint
};
return default;
return ValueTask.CompletedTask;
}
}
@ -618,7 +617,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.ClientAssertionPrincipal.SetAudiences("https://appleid.apple.com");
}
return default;
return ValueTask.CompletedTask;
}
}
@ -684,7 +683,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
};
}
return default;
return ValueTask.CompletedTask;
}
}
@ -729,7 +728,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.TokenRequest.ClientAssertionType = null;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -762,7 +761,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
if (context.TokenRequest.RedirectUri is null)
{
return default;
return ValueTask.CompletedTask;
}
// Note: some providers don't support the "state" parameter, don't flow
@ -788,7 +787,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.TokenRequest.RedirectUri
};
return default;
return ValueTask.CompletedTask;
}
}
@ -838,7 +837,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.ValidateBackchannelIdentityToken)
};
return default;
return ValueTask.CompletedTask;
}
}
@ -884,7 +883,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.DisableBackchannelIdentityTokenNonceValidation
};
return default;
return ValueTask.CompletedTask;
}
}
@ -975,7 +974,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.SendUserInfoRequest
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1015,7 +1014,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.DisableUserInfoValidation
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1108,7 +1107,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.UserInfoEndpoint
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1244,7 +1243,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.UserInfoRequest["uid"] = context.TokenResponse?["uid"];
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1279,7 +1278,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
// Don't overwrite the userinfo token principal if one was already set.
if (context.UserInfoTokenPrincipal is not null)
{
return default;
return ValueTask.CompletedTask;
}
// Some providers don't provide an OAuth 2.0/OpenID Connect userinfo endpoint but
@ -1311,7 +1310,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
if (parameters is null)
{
return default;
return ValueTask.CompletedTask;
}
var identity = new ClaimsIdentity(
@ -1349,7 +1348,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.UserInfoTokenPrincipal = new ClaimsPrincipal(identity);
return default;
return ValueTask.CompletedTask;
}
}
@ -1615,7 +1614,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.MergedPrincipal.GetClaim(ClaimTypes.NameIdentifier)
});
return default;
return ValueTask.CompletedTask;
}
}
@ -1657,7 +1656,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Properties[Shopify.Properties.ShopName] = settings.ShopName;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1733,7 +1732,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.AuthorizationEndpoint
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1770,7 +1769,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.ResponseMode
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1814,7 +1813,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.Request.Scope
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1845,7 +1844,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
if (context.RedirectUri is null)
{
return default;
return ValueTask.CompletedTask;
}
// Note: some providers don't support the "state" parameter, don't flow
@ -1868,7 +1867,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Request.State = null;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2061,7 +2060,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.Request.Prompt = settings.Prompt;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2099,7 +2098,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
_ => context.RevocationEndpointClientAuthenticationMethod
};
return default;
return ValueTask.CompletedTask;
}
}
@ -2144,7 +2143,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.ClientAssertionPrincipal.SetAudiences("https://appleid.apple.com");
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2189,7 +2188,7 @@ public static partial class OpenIddictClientWebIntegrationHandlers
context.RevocationRequest.ClientAssertionType = null;
}
return default;
return ValueTask.CompletedTask;
}
}
}

1
src/OpenIddict.Client/OpenIddictClientBuilder.cs

@ -14,7 +14,6 @@ using System.Security.Cryptography.X509Certificates;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Client;
using OpenIddict.Extensions;
namespace Microsoft.Extensions.DependencyInjection;

1
src/OpenIddict.Client/OpenIddictClientConfiguration.cs

@ -14,7 +14,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Protocols;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Client;

1
src/OpenIddict.Client/OpenIddictClientDispatcher.cs

@ -7,7 +7,6 @@
using System.ComponentModel;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
namespace OpenIddict.Client;

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

@ -7,7 +7,6 @@
using System.Collections.Immutable;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using OpenIddict.Extensions;
namespace OpenIddict.Client;
@ -187,7 +186,7 @@ public static partial class OpenIddictClientHandlers
// Don't overwrite the endpoint URI if it was already set.
if (!string.IsNullOrEmpty(context.AuthorizationEndpoint))
{
return default;
return ValueTask.CompletedTask;
}
// Ensure the authorization endpoint is present and is a valid absolute URI.
@ -199,7 +198,7 @@ public static partial class OpenIddictClientHandlers
context.AuthorizationEndpoint = context.Configuration.AuthorizationEndpoint.AbsoluteUri;
return default;
return ValueTask.CompletedTask;
}
}
@ -235,11 +234,11 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -307,10 +306,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2179),
uri: SR.FormatID8000(SR.ID2179));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -347,7 +346,7 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2180(Parameters.RequestUri),
uri: SR.FormatID8000(SR.ID2180));
return default;
return ValueTask.CompletedTask;
}
// Return an error if the "request_uri" parameter is malformed.
@ -359,10 +358,10 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2181(Parameters.RequestUri),
uri: SR.FormatID8000(SR.ID2181));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -400,10 +399,10 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2180(Parameters.ExpiresIn),
uri: SR.FormatID8000(SR.ID2180));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -670,7 +669,7 @@ public static partial class OpenIddictClientHandlers
context.Request.ResponseMode = null;
}
return default;
return ValueTask.CompletedTask;
}
}

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

@ -7,7 +7,6 @@
using System.Collections.Immutable;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using OpenIddict.Extensions;
namespace OpenIddict.Client;
@ -58,11 +57,11 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -136,10 +135,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2167),
uri: SR.FormatID8000(SR.ID2167));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -176,7 +175,7 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2168(Parameters.VerificationUri),
uri: SR.FormatID8000(SR.ID2168));
return default;
return ValueTask.CompletedTask;
}
// Return an error if the "verification_uri" parameter is malformed.
@ -188,7 +187,7 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2169(Parameters.VerificationUri),
uri: SR.FormatID8000(SR.ID2169));
return default;
return ValueTask.CompletedTask;
}
// Note: the "verification_uri_complete" parameter is optional and MUST NOT
@ -202,10 +201,10 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2169(Parameters.VerificationUriComplete),
uri: SR.FormatID8000(SR.ID2169));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -242,10 +241,10 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2168(Parameters.ExpiresIn),
uri: SR.FormatID8000(SR.ID2168));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -8,7 +8,6 @@ using System.Collections.Immutable;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Client;
@ -93,11 +92,11 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -190,10 +189,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2144),
uri: SR.FormatID8000(SR.ID2144));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -231,7 +230,7 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2096),
uri: SR.FormatID8000(SR.ID2096));
return default;
return ValueTask.CompletedTask;
}
if (!Uri.TryCreate(issuer, UriKind.Absolute, out Uri? uri))
@ -241,7 +240,7 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2097),
uri: SR.FormatID8000(SR.ID2097));
return default;
return ValueTask.CompletedTask;
}
// Ensure the issuer matches the expected value.
@ -252,12 +251,12 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2165),
uri: SR.FormatID8000(SR.ID2165));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.Issuer = uri;
return default;
return ValueTask.CompletedTask;
}
}
@ -303,13 +302,13 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2100(Metadata.AuthorizationEndpoint),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.AuthorizationEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -346,7 +345,7 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2099),
uri: SR.FormatID8000(SR.ID2099));
return default;
return ValueTask.CompletedTask;
}
if (!Uri.TryCreate(endpoint, UriKind.Absolute, out Uri? uri) || OpenIddictHelpers.IsImplicitFileUri(uri))
@ -356,12 +355,12 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2100(Metadata.JwksUri),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.JsonWebKeySetUri = uri;
return default;
return ValueTask.CompletedTask;
}
}
@ -398,13 +397,13 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2100(Metadata.DeviceAuthorizationEndpoint),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.DeviceAuthorizationEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -441,13 +440,13 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2100(Metadata.IntrospectionEndpoint),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.IntrospectionEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -484,13 +483,13 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2100(Metadata.EndSessionEndpoint),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.EndSessionEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -526,7 +525,7 @@ public static partial class OpenIddictClientHandlers
context.Configuration.MtlsDeviceAuthorizationEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -562,7 +561,7 @@ public static partial class OpenIddictClientHandlers
context.Configuration.MtlsIntrospectionEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -597,7 +596,7 @@ public static partial class OpenIddictClientHandlers
context.Configuration.MtlsPushedAuthorizationEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -632,7 +631,7 @@ public static partial class OpenIddictClientHandlers
context.Configuration.MtlsRevocationEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -667,7 +666,7 @@ public static partial class OpenIddictClientHandlers
context.Configuration.MtlsTokenEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -702,7 +701,7 @@ public static partial class OpenIddictClientHandlers
context.Configuration.MtlsUserInfoEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -739,13 +738,13 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2100(Metadata.PushedAuthorizationRequestEndpoint),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.PushedAuthorizationEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -782,13 +781,13 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2100(Metadata.RevocationEndpoint),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.RevocationEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -825,13 +824,13 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2100(Metadata.TokenEndpoint),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.TokenEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -868,13 +867,13 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2100(Metadata.UserInfoEndpoint),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.UserInfoEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -910,7 +909,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -946,7 +945,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -982,7 +981,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1018,7 +1017,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1054,7 +1053,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1085,7 +1084,7 @@ public static partial class OpenIddictClientHandlers
context.Configuration.AuthorizationResponseIssParameterSupported = (bool?)
context.Response[Metadata.AuthorizationResponseIssParameterSupported];
return default;
return ValueTask.CompletedTask;
}
}
@ -1116,7 +1115,7 @@ public static partial class OpenIddictClientHandlers
context.Configuration.TlsClientCertificateBoundAccessTokens = (bool?)
context.Response[Metadata.TlsClientCertificateBoundAccessTokens];
return default;
return ValueTask.CompletedTask;
}
}
@ -1147,7 +1146,7 @@ public static partial class OpenIddictClientHandlers
context.Configuration.RequirePushedAuthorizationRequests = (bool?)
context.Response[Metadata.RequirePushedAuthorizationRequests];
return default;
return ValueTask.CompletedTask;
}
}
@ -1187,7 +1186,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1224,7 +1223,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1264,7 +1263,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1301,7 +1300,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1338,7 +1337,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1374,11 +1373,11 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -1440,10 +1439,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2145),
uri: SR.FormatID8000(SR.ID2145));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1478,7 +1477,7 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2102(JsonWebKeySetParameterNames.Keys),
uri: SR.FormatID8000(SR.ID2102));
return default;
return ValueTask.CompletedTask;
}
for (var index = 0; index < keys.Count; index++)
@ -1529,7 +1528,7 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2103),
uri: SR.FormatID8000(SR.ID2103));
return default;
return ValueTask.CompletedTask;
}
// If the key is a RSA key, ensure the mandatory parameters are all present.
@ -1541,7 +1540,7 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2104),
uri: SR.FormatID8000(SR.ID2104));
return default;
return ValueTask.CompletedTask;
}
// If the key is an EC key, ensure the mandatory parameters are all present.
@ -1553,7 +1552,7 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2104),
uri: SR.FormatID8000(SR.ID2104));
return default;
return ValueTask.CompletedTask;
}
key.KeyId = (string?) keys[index][JsonWebKeyParameterNames.Kid];
@ -1576,7 +1575,7 @@ public static partial class OpenIddictClientHandlers
context.JsonWebKeySet.Keys.Add(key);
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -55,11 +55,11 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -135,10 +135,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2147),
uri: SR.FormatID8000(SR.ID2147));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -10,7 +10,6 @@ using System.Globalization;
using System.Security.Claims;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using OpenIddict.Extensions;
namespace OpenIddict.Client;
@ -65,11 +64,11 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -149,10 +148,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2146),
uri: SR.FormatID8000(SR.ID2146));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -192,7 +191,7 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2105(Parameters.Active),
uri: SR.FormatID8000(SR.ID2105));
return default;
return ValueTask.CompletedTask;
}
if (active is not true)
@ -202,10 +201,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2106),
uri: SR.FormatID8000(SR.ID2106));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -244,7 +243,7 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2108),
uri: SR.FormatID8000(SR.ID2108));
return default;
return ValueTask.CompletedTask;
}
// Ensure the issuer matches the expected value.
@ -255,11 +254,11 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2109),
uri: SR.FormatID8000(SR.ID2109));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -303,10 +302,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2176),
uri: SR.FormatID8000(SR.ID2176));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -341,7 +340,7 @@ public static partial class OpenIddictClientHandlers
// whether the returned token has an acceptable type depending on the context.
switch ((string?) context.Response[Claims.TokenUsage])
{
case null or { Length: 0 }: return default;
case null or { Length: 0 }: return ValueTask.CompletedTask;
// Note: by default, OpenIddict only allows access/refresh tokens to be
// introspected but additional types can be added using the events model.
@ -359,10 +358,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2118),
uri: SR.FormatID8000(SR.ID2118));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -455,7 +454,7 @@ public static partial class OpenIddictClientHandlers
context.Principal = new ClaimsPrincipal(identity);
return default;
return ValueTask.CompletedTask;
}
}
@ -521,7 +520,7 @@ public static partial class OpenIddictClientHandlers
_ => []
});
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -11,7 +11,6 @@ using System.Security.Claims;
using Microsoft.Extensions.Logging;
using Microsoft.IdentityModel.JsonWebTokens;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Client;
@ -99,7 +98,7 @@ public static partial class OpenIddictClientHandlers
context.SecurityTokenHandler = context.Options.JsonWebTokenHandler;
context.TokenValidationParameters = parameters;
return default;
return ValueTask.CompletedTask;
TokenValidationParameters GetClientTokenValidationParameters()
{
@ -215,7 +214,7 @@ public static partial class OpenIddictClientHandlers
// If no character was explicitly added, all characters are considered valid.
if (context.AllowedCharset.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// Remove the disallowed characters from the token string. If the token is
@ -228,12 +227,12 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2004),
uri: SR.FormatID8000(SR.ID2004));
return default;
return ValueTask.CompletedTask;
}
context.Token = token;
return default;
return ValueTask.CompletedTask;
}
}
@ -503,7 +502,7 @@ public static partial class OpenIddictClientHandlers
// Note: only map the private claims from fully trusted tokens.
if (context.Principal is null || !context.Principal.HasTokenType(TokenTypeIdentifiers.Private.StateToken))
{
return default;
return ValueTask.CompletedTask;
}
// In OpenIddict 3.0, the creation date of a token is stored in "oi_crt_dt".
@ -530,7 +529,7 @@ public static partial class OpenIddictClientHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -638,7 +637,7 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2004),
uri: SR.FormatID8000(SR.ID2004));
return default;
return ValueTask.CompletedTask;
}
// When using JWT or Data Protection tokens, the correct token type is always enforced by IdentityModel
@ -656,7 +655,7 @@ public static partial class OpenIddictClientHandlers
throw new InvalidOperationException(SR.FormatID0005(type, string.Join(", ", context.ValidTokenTypes)));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -694,10 +693,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2019),
uri: SR.FormatID8000(SR.ID2019));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -730,7 +729,7 @@ public static partial class OpenIddictClientHandlers
// If no specific value is expected, skip the default presenter validation.
if (context.ValidPresenters.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't have any presenter attached, return an error.
@ -744,7 +743,7 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2184),
uri: SR.FormatID8000(SR.ID2184));
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't include any registered presenter, return an error.
@ -757,10 +756,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2185),
uri: SR.FormatID8000(SR.ID2185));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -793,7 +792,7 @@ public static partial class OpenIddictClientHandlers
// If no specific value is expected, skip the default audience validation.
if (context.ValidAudiences.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't have any audience attached, return an error.
@ -807,7 +806,7 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2093),
uri: SR.FormatID8000(SR.ID2093));
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't include any registered audience, return an error.
@ -820,10 +819,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2094),
uri: SR.FormatID8000(SR.ID2094));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -949,7 +948,7 @@ public static partial class OpenIddictClientHandlers
_ => context.Options.SigningCredentials.First()
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1056,7 +1055,7 @@ public static partial class OpenIddictClientHandlers
context.SecurityTokenDescriptor.Subject = (ClaimsIdentity) principal.Identity;
return default;
return ValueTask.CompletedTask;
}
}
@ -1121,7 +1120,7 @@ public static partial class OpenIddictClientHandlers
string value => value
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1152,7 +1151,7 @@ public static partial class OpenIddictClientHandlers
// If a token was already attached by another handler, don't overwrite it.
if (!string.IsNullOrEmpty(context.Token))
{
return default;
return ValueTask.CompletedTask;
}
context.Token = context.SecurityTokenHandler.CreateToken(context.SecurityTokenDescriptor);
@ -1160,7 +1159,7 @@ public static partial class OpenIddictClientHandlers
context.Logger.LogTrace(6013, SR.GetResourceString(SR.ID6013), context.TokenType,
context.Token, context.SecurityTokenDescriptor.Subject?.Claims ?? []);
return default;
return ValueTask.CompletedTask;
}
}

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

@ -55,11 +55,11 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -116,10 +116,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2175),
uri: SR.FormatID8000(SR.ID2175));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -6,7 +6,6 @@
using System.Collections.Immutable;
using Microsoft.Extensions.Logging;
using OpenIddict.Extensions;
namespace OpenIddict.Client;
@ -170,7 +169,7 @@ public static partial class OpenIddictClientHandlers
// Don't overwrite the endpoint URI if it was already set.
if (!string.IsNullOrEmpty(context.EndSessionEndpoint))
{
return default;
return ValueTask.CompletedTask;
}
// Ensure the end session endpoint is present and is a valid absolute URI.
@ -182,7 +181,7 @@ public static partial class OpenIddictClientHandlers
context.EndSessionEndpoint = context.Configuration.EndSessionEndpoint.AbsoluteUri;
return default;
return ValueTask.CompletedTask;
}
}

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

@ -52,7 +52,7 @@ public static partial class OpenIddictClientHandlers
// Ignore the response instance if a userinfo token was extracted.
if (!string.IsNullOrEmpty(context.UserInfoToken))
{
return default;
return ValueTask.CompletedTask;
}
foreach (var parameter in context.Response.GetParameters())
@ -64,11 +64,11 @@ public static partial class OpenIddictClientHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -131,10 +131,10 @@ public static partial class OpenIddictClientHandlers
description: SR.GetResourceString(SR.ID2148),
uri: SR.FormatID8000(SR.ID2148));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -166,7 +166,7 @@ public static partial class OpenIddictClientHandlers
// Ignore the response instance if a userinfo token was extracted.
if (!string.IsNullOrEmpty(context.UserInfoToken))
{
return default;
return ValueTask.CompletedTask;
}
// Create a new claims-based identity using the same authentication type
@ -225,7 +225,7 @@ public static partial class OpenIddictClientHandlers
context.Principal = new ClaimsPrincipal(identity);
return default;
return ValueTask.CompletedTask;
}
}
}

353
src/OpenIddict.Client/OpenIddictClientHandlers.cs

File diff suppressed because it is too large

1
src/OpenIddict.Client/OpenIddictClientRetriever.cs

@ -7,7 +7,6 @@
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using Microsoft.IdentityModel.Protocols;
using OpenIddict.Extensions;
namespace OpenIddict.Client;

1
src/OpenIddict.Client/OpenIddictClientService.cs

@ -12,7 +12,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using static OpenIddict.Abstractions.OpenIddictExceptions;
using static OpenIddict.Client.OpenIddictClientModels;

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

@ -16,7 +16,6 @@ using System.Text.Json;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using ValidationException = OpenIddict.Abstractions.OpenIddictExceptions.ValidationException;
#if !SUPPORTS_KEY_DERIVATION_WITH_SPECIFIED_HASH_ALGORITHM

1
src/OpenIddict.Core/Managers/OpenIddictAuthorizationManager.cs

@ -12,7 +12,6 @@ using System.Text;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
using static OpenIddict.Abstractions.OpenIddictExceptions;
using ValidationException = OpenIddict.Abstractions.OpenIddictExceptions.ValidationException;

1
src/OpenIddict.Core/Managers/OpenIddictTokenManager.cs

@ -11,7 +11,6 @@ using System.Text;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
using static OpenIddict.Abstractions.OpenIddictExceptions;
using ValidationException = OpenIddict.Abstractions.OpenIddictExceptions.ValidationException;

1
src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkHelpers.cs

@ -10,7 +10,6 @@ using System.Runtime.CompilerServices;
using Microsoft.Extensions.DependencyInjection;
using OpenIddict.EntityFramework;
using OpenIddict.EntityFramework.Models;
using OpenIddict.Extensions;
namespace System.Data.Entity;

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

@ -782,7 +782,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.ApplicationType = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -795,7 +795,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.ClientId = identifier;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -808,7 +808,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.ClientSecret = secret;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -821,7 +821,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.ClientType = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -834,7 +834,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.ConsentType = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -847,7 +847,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.DisplayName = name;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -863,7 +863,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
{
application.DisplayNames = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -886,7 +886,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.DisplayNames = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -899,7 +899,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.JsonWebKeySet = set is not null ? JsonSerializer.Serialize(set, OpenIddictSerializer.Default.JsonWebKeySet) : null;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -914,7 +914,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
{
application.Permissions = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -936,7 +936,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.Permissions = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -952,7 +952,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
{
application.PostLogoutRedirectUris = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -974,7 +974,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.PostLogoutRedirectUris = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -990,7 +990,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
{
application.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1013,7 +1013,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.Properties = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1029,7 +1029,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
{
application.RedirectUris = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1051,7 +1051,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.RedirectUris = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1066,7 +1066,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
{
application.Requirements = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1088,7 +1088,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.Requirements = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1104,7 +1104,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
{
application.Settings = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1127,7 +1127,7 @@ public class OpenIddictEntityFrameworkApplicationStore<
application.Settings = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

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

@ -16,7 +16,6 @@ using System.Text.Json;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options;
using OpenIddict.EntityFramework.Models;
using OpenIddict.Extensions;
using static OpenIddict.Abstractions.OpenIddictExceptions;
namespace OpenIddict.EntityFramework;
@ -812,7 +811,7 @@ public class OpenIddictEntityFrameworkAuthorizationStore<
authorization.CreationDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -828,7 +827,7 @@ public class OpenIddictEntityFrameworkAuthorizationStore<
{
authorization.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -851,7 +850,7 @@ public class OpenIddictEntityFrameworkAuthorizationStore<
authorization.Properties = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -867,7 +866,7 @@ public class OpenIddictEntityFrameworkAuthorizationStore<
{
authorization.Scopes = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -889,7 +888,7 @@ public class OpenIddictEntityFrameworkAuthorizationStore<
authorization.Scopes = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -902,7 +901,7 @@ public class OpenIddictEntityFrameworkAuthorizationStore<
authorization.Status = status;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -915,7 +914,7 @@ public class OpenIddictEntityFrameworkAuthorizationStore<
authorization.Subject = subject;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -928,7 +927,7 @@ public class OpenIddictEntityFrameworkAuthorizationStore<
authorization.Type = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

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

@ -531,7 +531,7 @@ public class OpenIddictEntityFrameworkScopeStore<
scope.Description = description;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -547,7 +547,7 @@ public class OpenIddictEntityFrameworkScopeStore<
{
scope.Descriptions = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -570,7 +570,7 @@ public class OpenIddictEntityFrameworkScopeStore<
scope.Descriptions = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -583,7 +583,7 @@ public class OpenIddictEntityFrameworkScopeStore<
scope.DisplayName = name;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -599,7 +599,7 @@ public class OpenIddictEntityFrameworkScopeStore<
{
scope.DisplayNames = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -622,7 +622,7 @@ public class OpenIddictEntityFrameworkScopeStore<
scope.DisplayNames = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -635,7 +635,7 @@ public class OpenIddictEntityFrameworkScopeStore<
scope.Name = name;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -651,7 +651,7 @@ public class OpenIddictEntityFrameworkScopeStore<
{
scope.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -674,7 +674,7 @@ public class OpenIddictEntityFrameworkScopeStore<
scope.Properties = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -689,7 +689,7 @@ public class OpenIddictEntityFrameworkScopeStore<
{
scope.Resources = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -711,7 +711,7 @@ public class OpenIddictEntityFrameworkScopeStore<
scope.Resources = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

21
src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkTokenStore.cs

@ -16,7 +16,6 @@ using System.Text.Json;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options;
using OpenIddict.EntityFramework.Models;
using OpenIddict.Extensions;
using static OpenIddict.Abstractions.OpenIddictExceptions;
namespace OpenIddict.EntityFramework;
@ -965,7 +964,7 @@ public class OpenIddictEntityFrameworkTokenStore<
token.CreationDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -978,7 +977,7 @@ public class OpenIddictEntityFrameworkTokenStore<
token.ExpirationDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -991,7 +990,7 @@ public class OpenIddictEntityFrameworkTokenStore<
token.Payload = payload;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1007,7 +1006,7 @@ public class OpenIddictEntityFrameworkTokenStore<
{
token.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1030,7 +1029,7 @@ public class OpenIddictEntityFrameworkTokenStore<
token.Properties = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1043,7 +1042,7 @@ public class OpenIddictEntityFrameworkTokenStore<
token.RedemptionDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1056,7 +1055,7 @@ public class OpenIddictEntityFrameworkTokenStore<
token.ReferenceId = identifier;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1069,7 +1068,7 @@ public class OpenIddictEntityFrameworkTokenStore<
token.Status = status;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1082,7 +1081,7 @@ public class OpenIddictEntityFrameworkTokenStore<
token.Subject = subject;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1095,7 +1094,7 @@ public class OpenIddictEntityFrameworkTokenStore<
token.Type = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

1
src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreHelpers.cs

@ -10,7 +10,6 @@ using System.Runtime.CompilerServices;
using Microsoft.Extensions.DependencyInjection;
using OpenIddict.EntityFrameworkCore;
using OpenIddict.EntityFrameworkCore.Models;
using OpenIddict.Extensions;
namespace Microsoft.EntityFrameworkCore;

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

@ -863,7 +863,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.ApplicationType = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -876,7 +876,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.ClientId = identifier;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -889,7 +889,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.ClientSecret = secret;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -902,7 +902,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.ClientType = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -915,7 +915,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.ConsentType = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -928,7 +928,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.DisplayName = name;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -944,7 +944,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
{
application.DisplayNames = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -967,7 +967,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.DisplayNames = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -980,7 +980,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.JsonWebKeySet = set is not null ? JsonSerializer.Serialize(set, OpenIddictSerializer.Default.JsonWebKeySet) : null;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -995,7 +995,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
{
application.Permissions = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1017,7 +1017,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.Permissions = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1033,7 +1033,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
{
application.PostLogoutRedirectUris = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1055,7 +1055,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.PostLogoutRedirectUris = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1071,7 +1071,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
{
application.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1094,7 +1094,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.Properties = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1110,7 +1110,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
{
application.RedirectUris = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1132,7 +1132,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.RedirectUris = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1147,7 +1147,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
{
application.Requirements = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1169,7 +1169,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.Requirements = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1185,7 +1185,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
{
application.Settings = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1208,7 +1208,7 @@ public class OpenIddictEntityFrameworkCoreApplicationStore<
application.Settings = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

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

@ -15,7 +15,6 @@ using System.Text.Json;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options;
using OpenIddict.EntityFrameworkCore.Models;
using OpenIddict.Extensions;
using static OpenIddict.Abstractions.OpenIddictExceptions;
namespace OpenIddict.EntityFrameworkCore;
@ -1016,7 +1015,7 @@ public class OpenIddictEntityFrameworkCoreAuthorizationStore<
authorization.CreationDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1032,7 +1031,7 @@ public class OpenIddictEntityFrameworkCoreAuthorizationStore<
{
authorization.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1055,7 +1054,7 @@ public class OpenIddictEntityFrameworkCoreAuthorizationStore<
authorization.Properties = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1071,7 +1070,7 @@ public class OpenIddictEntityFrameworkCoreAuthorizationStore<
{
authorization.Scopes = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1093,7 +1092,7 @@ public class OpenIddictEntityFrameworkCoreAuthorizationStore<
authorization.Scopes = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1107,7 +1106,7 @@ public class OpenIddictEntityFrameworkCoreAuthorizationStore<
authorization.Status = status;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1121,7 +1120,7 @@ public class OpenIddictEntityFrameworkCoreAuthorizationStore<
authorization.Subject = subject;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1135,7 +1134,7 @@ public class OpenIddictEntityFrameworkCoreAuthorizationStore<
authorization.Type = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

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

@ -545,7 +545,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
scope.Description = description;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -561,7 +561,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
{
scope.Descriptions = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -584,7 +584,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
scope.Descriptions = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -597,7 +597,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
scope.DisplayName = name;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -613,7 +613,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
{
scope.DisplayNames = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -636,7 +636,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
scope.DisplayNames = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -649,7 +649,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
scope.Name = name;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -665,7 +665,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
{
scope.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -688,7 +688,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
scope.Properties = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -703,7 +703,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
{
scope.Resources = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -725,7 +725,7 @@ public class OpenIddictEntityFrameworkCoreScopeStore<
scope.Resources = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

21
src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreTokenStore.cs

@ -15,7 +15,6 @@ using System.Text.Json;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options;
using OpenIddict.EntityFrameworkCore.Models;
using OpenIddict.Extensions;
using static OpenIddict.Abstractions.OpenIddictExceptions;
namespace OpenIddict.EntityFrameworkCore;
@ -1170,7 +1169,7 @@ public class OpenIddictEntityFrameworkCoreTokenStore<
token.CreationDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1183,7 +1182,7 @@ public class OpenIddictEntityFrameworkCoreTokenStore<
token.ExpirationDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1196,7 +1195,7 @@ public class OpenIddictEntityFrameworkCoreTokenStore<
token.Payload = payload;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1212,7 +1211,7 @@ public class OpenIddictEntityFrameworkCoreTokenStore<
{
token.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -1235,7 +1234,7 @@ public class OpenIddictEntityFrameworkCoreTokenStore<
token.Properties = Encoding.UTF8.GetString(stream.ToArray());
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1248,7 +1247,7 @@ public class OpenIddictEntityFrameworkCoreTokenStore<
token.RedemptionDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1261,7 +1260,7 @@ public class OpenIddictEntityFrameworkCoreTokenStore<
token.ReferenceId = identifier;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1274,7 +1273,7 @@ public class OpenIddictEntityFrameworkCoreTokenStore<
token.Status = status;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1287,7 +1286,7 @@ public class OpenIddictEntityFrameworkCoreTokenStore<
token.Subject = subject;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -1300,7 +1299,7 @@ public class OpenIddictEntityFrameworkCoreTokenStore<
token.Type = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

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

@ -508,7 +508,7 @@ public class OpenIddictMongoDbApplicationStore<
application.ApplicationType = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -522,7 +522,7 @@ public class OpenIddictMongoDbApplicationStore<
application.ClientId = identifier;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -536,7 +536,7 @@ public class OpenIddictMongoDbApplicationStore<
application.ClientSecret = secret;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -550,7 +550,7 @@ public class OpenIddictMongoDbApplicationStore<
application.ClientType = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -564,7 +564,7 @@ public class OpenIddictMongoDbApplicationStore<
application.ConsentType = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -578,7 +578,7 @@ public class OpenIddictMongoDbApplicationStore<
application.DisplayName = name;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -594,14 +594,14 @@ public class OpenIddictMongoDbApplicationStore<
{
application.DisplayNames = null;
return default;
return ValueTask.CompletedTask;
}
application.DisplayNames = names.ToImmutableDictionary(
pair => pair.Key.Name,
pair => pair.Value);
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -616,7 +616,7 @@ public class OpenIddictMongoDbApplicationStore<
application.JsonWebKeySet = set is not null ? BsonDocument.Parse(
JsonSerializer.Serialize(set, OpenIddictSerializer.Default.JsonWebKeySet)) : null;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -632,12 +632,12 @@ public class OpenIddictMongoDbApplicationStore<
{
application.Permissions = null;
return default;
return ValueTask.CompletedTask;
}
application.Permissions = permissions.ToImmutableList();
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -653,12 +653,12 @@ public class OpenIddictMongoDbApplicationStore<
{
application.PostLogoutRedirectUris = null;
return default;
return ValueTask.CompletedTask;
}
application.PostLogoutRedirectUris = uris.ToImmutableList();
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -674,7 +674,7 @@ public class OpenIddictMongoDbApplicationStore<
{
application.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -697,7 +697,7 @@ public class OpenIddictMongoDbApplicationStore<
application.Properties = BsonDocument.Parse(Encoding.UTF8.GetString(stream.ToArray()));
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -713,12 +713,12 @@ public class OpenIddictMongoDbApplicationStore<
{
application.RedirectUris = null;
return default;
return ValueTask.CompletedTask;
}
application.RedirectUris = uris.ToImmutableList();
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -734,12 +734,12 @@ public class OpenIddictMongoDbApplicationStore<
{
application.Requirements = null;
return default;
return ValueTask.CompletedTask;
}
application.Requirements = requirements.ToImmutableList();
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -755,12 +755,12 @@ public class OpenIddictMongoDbApplicationStore<
{
application.Settings = null;
return default;
return ValueTask.CompletedTask;
}
application.Settings = settings;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

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

@ -11,7 +11,6 @@ using System.Text;
using System.Text.Encodings.Web;
using System.Text.Json;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
using OpenIddict.MongoDb.Models;
using static OpenIddict.Abstractions.OpenIddictExceptions;
@ -443,9 +442,11 @@ public class OpenIddictMongoDbAuthorizationStore<
// Note: to avoid generating delete requests with very large filters, a buffer is used here and the
// maximum number of elements that can be removed by a single call to PruneAsync() is deliberately limited.
foreach (var buffer in identifiers.Take(1_000_000).Buffer(1_000))
foreach (var buffer in identifiers.Take(1_000_000).Chunk(1_000))
{
result += (await collection.DeleteManyAsync(authorization => buffer.Contains(authorization.Id), cancellationToken)).DeletedCount;
// Note: Enumerable.Contains() is deliberately used without the extension method syntax to ensure the
// span-based MemoryExtensions.Contains() API (which is not supported by MongoDB) is not used instead.
result += (await collection.DeleteManyAsync(authorization => Enumerable.Contains(buffer, authorization.Id), cancellationToken)).DeletedCount;
}
return result;
@ -541,7 +542,7 @@ public class OpenIddictMongoDbAuthorizationStore<
authorization.ApplicationId = ObjectId.Empty;
}
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -555,7 +556,7 @@ public class OpenIddictMongoDbAuthorizationStore<
authorization.CreationDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -571,7 +572,7 @@ public class OpenIddictMongoDbAuthorizationStore<
{
authorization.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -594,7 +595,7 @@ public class OpenIddictMongoDbAuthorizationStore<
authorization.Properties = BsonDocument.Parse(Encoding.UTF8.GetString(stream.ToArray()));
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -610,12 +611,12 @@ public class OpenIddictMongoDbAuthorizationStore<
{
authorization.Scopes = null;
return default;
return ValueTask.CompletedTask;
}
authorization.Scopes = scopes.ToImmutableList();
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -628,7 +629,7 @@ public class OpenIddictMongoDbAuthorizationStore<
authorization.Status = status;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -641,7 +642,7 @@ public class OpenIddictMongoDbAuthorizationStore<
authorization.Subject = subject;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -654,7 +655,7 @@ public class OpenIddictMongoDbAuthorizationStore<
authorization.Type = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

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

@ -397,7 +397,7 @@ public class OpenIddictMongoDbScopeStore<
scope.Description = description;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -413,14 +413,14 @@ public class OpenIddictMongoDbScopeStore<
{
scope.Descriptions = null;
return default;
return ValueTask.CompletedTask;
}
scope.Descriptions = descriptions.ToImmutableDictionary(
pair => pair.Key.Name,
pair => pair.Value);
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -436,14 +436,14 @@ public class OpenIddictMongoDbScopeStore<
{
scope.DisplayNames = null;
return default;
return ValueTask.CompletedTask;
}
scope.DisplayNames = names.ToImmutableDictionary(
pair => pair.Key.Name,
pair => pair.Value);
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -456,7 +456,7 @@ public class OpenIddictMongoDbScopeStore<
scope.DisplayName = name;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -469,7 +469,7 @@ public class OpenIddictMongoDbScopeStore<
scope.Name = name;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -485,7 +485,7 @@ public class OpenIddictMongoDbScopeStore<
{
scope.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -508,7 +508,7 @@ public class OpenIddictMongoDbScopeStore<
scope.Properties = BsonDocument.Parse(Encoding.UTF8.GetString(stream.ToArray()));
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -523,12 +523,12 @@ public class OpenIddictMongoDbScopeStore<
{
scope.Resources = null;
return default;
return ValueTask.CompletedTask;
}
scope.Resources = resources.ToImmutableList();
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

31
src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbTokenStore.cs

@ -11,7 +11,6 @@ using System.Text;
using System.Text.Encodings.Web;
using System.Text.Json;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
using OpenIddict.MongoDb.Models;
using static OpenIddict.Abstractions.OpenIddictExceptions;
@ -519,9 +518,11 @@ public class OpenIddictMongoDbTokenStore<
// Note: to avoid generating delete requests with very large filters, a buffer is used here and the
// maximum number of elements that can be removed by a single call to PruneAsync() is deliberately limited.
foreach (var buffer in identifiers.Take(1_000_000).Buffer(1_000))
foreach (var buffer in identifiers.Take(1_000_000).Chunk(1_000))
{
result += (await collection.DeleteManyAsync(token => buffer.Contains(token.Id), cancellationToken)).DeletedCount;
// Note: Enumerable.Contains() is deliberately used without the extension method syntax to ensure the
// span-based MemoryExtensions.Contains() API (which is not supported by MongoDB) is not used instead.
result += (await collection.DeleteManyAsync(token => Enumerable.Contains(buffer, token.Id), cancellationToken)).DeletedCount;
}
return result;
@ -634,7 +635,7 @@ public class OpenIddictMongoDbTokenStore<
token.ApplicationId = ObjectId.Empty;
}
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -655,7 +656,7 @@ public class OpenIddictMongoDbTokenStore<
token.AuthorizationId = ObjectId.Empty;
}
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -668,7 +669,7 @@ public class OpenIddictMongoDbTokenStore<
token.CreationDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -681,7 +682,7 @@ public class OpenIddictMongoDbTokenStore<
token.ExpirationDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -694,7 +695,7 @@ public class OpenIddictMongoDbTokenStore<
token.Payload = payload;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -710,7 +711,7 @@ public class OpenIddictMongoDbTokenStore<
{
token.Properties = null;
return default;
return ValueTask.CompletedTask;
}
using var stream = new MemoryStream();
@ -733,7 +734,7 @@ public class OpenIddictMongoDbTokenStore<
token.Properties = BsonDocument.Parse(Encoding.UTF8.GetString(stream.ToArray()));
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -746,7 +747,7 @@ public class OpenIddictMongoDbTokenStore<
token.RedemptionDate = date?.UtcDateTime;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -759,7 +760,7 @@ public class OpenIddictMongoDbTokenStore<
token.ReferenceId = identifier;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -772,7 +773,7 @@ public class OpenIddictMongoDbTokenStore<
token.Status = status;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -785,7 +786,7 @@ public class OpenIddictMongoDbTokenStore<
token.Subject = subject;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>
@ -798,7 +799,7 @@ public class OpenIddictMongoDbTokenStore<
token.Type = type;
return default;
return ValueTask.CompletedTask;
}
/// <inheritdoc/>

1
src/OpenIddict.Quartz/OpenIddictQuartzJob.cs

@ -7,7 +7,6 @@
using System.ComponentModel;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
namespace OpenIddict.Quartz;

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

@ -91,7 +91,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (string.IsNullOrEmpty(context.Response.RequestUri))
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
@ -124,7 +124,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -252,7 +252,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (string.IsNullOrEmpty(context.RedirectUri) ||
!string.Equals(context.ResponseMode, ResponseModes.Query, StringComparison.Ordinal))
{
return default;
return ValueTask.CompletedTask;
}
context.Logger.LogInformation(6148, SR.GetResourceString(SR.ID6148), context.RedirectUri, context.Response);
@ -286,7 +286,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -323,7 +323,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (string.IsNullOrEmpty(context.RedirectUri) ||
!string.Equals(context.ResponseMode, ResponseModes.Fragment, StringComparison.Ordinal))
{
return default;
return ValueTask.CompletedTask;
}
context.Logger.LogInformation(6149, SR.GetResourceString(SR.ID6149), context.RedirectUri, context.Response);
@ -350,7 +350,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
response.Redirect(builder.ToString());
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
static bool Contains(StringBuilder builder, char delimiter)
{

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

@ -89,7 +89,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (!string.IsNullOrEmpty(context.Response.Error) &&
!string.Equals(context.Response.Error, Errors.AccessDenied, StringComparison.Ordinal))
{
return default;
return ValueTask.CompletedTask;
}
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
@ -101,7 +101,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
context.HandleRequest();
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -73,7 +73,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (string.IsNullOrEmpty(context.Response.RequestUri))
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
@ -106,7 +106,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -142,7 +142,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (string.IsNullOrEmpty(context.PostLogoutRedirectUri))
{
return default;
return ValueTask.CompletedTask;
}
context.Logger.LogInformation(6151, SR.GetResourceString(SR.ID6151), context.PostLogoutRedirectUri, context.Response);
@ -176,7 +176,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -215,7 +215,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (!string.IsNullOrEmpty(context.PostLogoutRedirectUri) ||
!string.IsNullOrEmpty(context.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
@ -227,7 +227,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
context.HandleRequest();
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -18,7 +18,6 @@ using Microsoft.AspNetCore.Http.Extensions;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.Net.Http.Headers;
using OpenIddict.Extensions;
using Properties = OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreConstants.Properties;
namespace OpenIddict.Server.AspNetCore;
@ -105,7 +104,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
context.BaseUri = CreateUri(UriHelper.BuildAbsolute(request.Scheme, host, request.PathBase));
context.RequestUri = CreateUri(UriHelper.BuildAbsolute(request.Scheme, host, request.PathBase, request.Path, request.QueryString));
return default;
return ValueTask.CompletedTask;
// Note: the BCL System.Uri class has strict rules (e.g it rejects specific characters and enforces a
// limit of 65519 characters for the complete URI representation). To ensure no exception is thrown if the
@ -153,10 +152,10 @@ public static partial class OpenIddictServerAspNetCoreHandlers
description: SR.GetResourceString(SR.ID2083),
uri: SR.FormatID8000(SR.ID2083));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -198,10 +197,10 @@ public static partial class OpenIddictServerAspNetCoreHandlers
description: SR.FormatID2081(HeaderNames.Host),
uri: SR.FormatID8000(SR.ID2081));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -264,7 +263,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -302,7 +301,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
context.Response.Scope = properties.GetString(Properties.Scope);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -365,7 +364,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -428,7 +427,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -476,10 +475,10 @@ public static partial class OpenIddictServerAspNetCoreHandlers
description: SR.GetResourceString(SR.ID2084),
uri: SR.FormatID8000(SR.ID2084));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -682,7 +681,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
description: SR.FormatID2174(ClientAuthenticationMethods.ClientSecretPost),
uri: SR.FormatID8000(SR.ID2174));
return default;
return ValueTask.CompletedTask;
}
// Reject requests that use client_secret_basic if support was explicitly disabled in the options.
@ -700,10 +699,10 @@ public static partial class OpenIddictServerAspNetCoreHandlers
description: SR.FormatID2174(ClientAuthenticationMethods.ClientSecretBasic),
uri: SR.FormatID8000(SR.ID2174));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -743,7 +742,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
string? header = request.Headers[HeaderNames.Authorization];
if (string.IsNullOrEmpty(header) || !header.StartsWith("Basic ", StringComparison.OrdinalIgnoreCase))
{
return default;
return ValueTask.CompletedTask;
}
// At this point, reject requests that use multiple client authentication methods.
@ -758,7 +757,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
description: SR.GetResourceString(SR.ID2087),
uri: SR.FormatID8000(SR.ID2087));
return default;
return ValueTask.CompletedTask;
}
try
@ -774,14 +773,14 @@ public static partial class OpenIddictServerAspNetCoreHandlers
description: SR.GetResourceString(SR.ID2055),
uri: SR.FormatID8000(SR.ID2055));
return default;
return ValueTask.CompletedTask;
}
// Attach the basic authentication credentials to the request message.
context.Transaction.Request.ClientId = UnescapeDataString(data[..index]);
context.Transaction.Request.ClientSecret = UnescapeDataString(data[(index + 1)..]);
return default;
return ValueTask.CompletedTask;
}
catch (Exception exception) when (!OpenIddictHelpers.IsFatal(exception))
@ -791,7 +790,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
description: SR.GetResourceString(SR.ID2055),
uri: SR.FormatID8000(SR.ID2055));
return default;
return ValueTask.CompletedTask;
}
static string? UnescapeDataString(string data)
@ -842,13 +841,13 @@ public static partial class OpenIddictServerAspNetCoreHandlers
string? header = request.Headers[HeaderNames.Authorization];
if (string.IsNullOrEmpty(header) || !header.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
{
return default;
return ValueTask.CompletedTask;
}
// Attach the access token to the request message.
context.Transaction.Request.AccessToken = header["Bearer ".Length..];
return default;
return ValueTask.CompletedTask;
}
}
@ -888,7 +887,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
case OpenIddictServerEndpointType.Authorization when
context.Options.EnableAuthorizationRequestCaching &&
string.IsNullOrEmpty(context.Transaction.Request?.RequestUri):
return default;
return ValueTask.CompletedTask;
// When end session request caching is enabled and the request doesn't contain a
// request_uri yet, do not enable the pass-through mode to allow OpenIddict to trigger
@ -896,12 +895,12 @@ public static partial class OpenIddictServerAspNetCoreHandlers
case OpenIddictServerEndpointType.EndSession when
context.Options.EnableEndSessionRequestCaching &&
string.IsNullOrEmpty(context.Transaction.Request?.RequestUri):
return default;
return ValueTask.CompletedTask;
}
context.SkipRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -967,7 +966,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
_ => 400
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1006,7 +1005,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
response.Headers[HeaderNames.Pragma] = "no-cache";
response.Headers[HeaderNames.Expires] = "Thu, 01 Jan 1970 00:00:00 GMT";
return default;
return ValueTask.CompletedTask;
}
}
@ -1049,7 +1048,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
var scheme = (context.EndpointType, context.Transaction.Response.Error) switch
@ -1074,7 +1073,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (string.IsNullOrEmpty(scheme))
{
return default;
return ValueTask.CompletedTask;
}
var parameters = new Dictionary<string, string>(StringComparer.Ordinal);
@ -1128,7 +1127,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
response.Headers.Append(HeaderNames.WWWAuthenticate, builder.ToString());
return default;
return ValueTask.CompletedTask;
}
}
@ -1165,13 +1164,13 @@ public static partial class OpenIddictServerAspNetCoreHandlers
// If the response doesn't contain a WWW-Authenticate header, don't return an empty response.
if (!response.Headers.ContainsKey(HeaderNames.WWWAuthenticate))
{
return default;
return ValueTask.CompletedTask;
}
context.Logger.LogInformation(6141, SR.GetResourceString(SR.ID6141), context.Transaction.Response);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1268,12 +1267,12 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
context.SkipRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1313,7 +1312,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
// Determine if the status code pages middleware has been enabled for this request.
@ -1322,7 +1321,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
var feature = response.HttpContext.Features.Get<IStatusCodePagesFeature>();
if (feature is not { Enabled: true })
{
return default;
return ValueTask.CompletedTask;
}
// Mark the request as fully handled to prevent the other OpenIddict server handlers
@ -1330,7 +1329,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
// to rewrite the response using the logic defined by the developer when registering it.
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1437,7 +1436,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
context.Logger.LogInformation(6145, SR.GetResourceString(SR.ID6145));
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -10,7 +10,6 @@ using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using static OpenIddict.Server.DataProtection.OpenIddictServerDataProtectionConstants.Purposes;
using static OpenIddict.Server.OpenIddictServerHandlers.Protection;
using Schemes = OpenIddict.Server.DataProtection.OpenIddictServerDataProtectionConstants.Purposes.Schemes;
@ -61,13 +60,13 @@ public static partial class OpenIddictServerDataProtectionHandlers
// If a principal was already attached, don't overwrite it.
if (context.Principal is not null)
{
return default;
return ValueTask.CompletedTask;
}
// If a specific token format is expected, return immediately if it doesn't match the expected value.
if (context.TokenFormat is not null and not TokenFormats.Private.DataProtection)
{
return default;
return ValueTask.CompletedTask;
}
// Note: ASP.NET Core Data Protection tokens created by the default implementation always start
@ -84,7 +83,7 @@ public static partial class OpenIddictServerDataProtectionHandlers
"Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtectionProvider",
StringComparison.Ordinal))
{
return default;
return ValueTask.CompletedTask;
}
// Tokens generated using ASP.NET Core Data Protection are encrypted by symmetric keys
@ -178,14 +177,14 @@ public static partial class OpenIddictServerDataProtectionHandlers
description: SR.GetResourceString(SR.ID2004),
uri: SR.FormatID8000(SR.ID2004));
return default;
return ValueTask.CompletedTask;
}
context.Principal = principal;
context.Logger.LogTrace(6152, SR.GetResourceString(SR.ID6152), context.Token, context.Principal.Claims);
return default;
return ValueTask.CompletedTask;
ClaimsPrincipal? ValidateToken(string type)
{
@ -306,7 +305,7 @@ public static partial class OpenIddictServerDataProtectionHandlers
_ => context.TokenFormat // Don't override the format if the token type is not supported.
};
return default;
return ValueTask.CompletedTask;
}
}
@ -342,7 +341,7 @@ public static partial class OpenIddictServerDataProtectionHandlers
// If an access token was already attached by another handler, don't overwrite it.
if (!string.IsNullOrEmpty(context.Token))
{
return default;
return ValueTask.CompletedTask;
}
// Create a Data Protection protector using the provider registered in the options.
@ -394,7 +393,7 @@ public static partial class OpenIddictServerDataProtectionHandlers
context.Logger.LogTrace(6016, SR.GetResourceString(SR.ID6016), context.TokenType,
context.Token, context.Principal.Claims);
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -93,7 +93,7 @@ public static partial class OpenIddictServerOwinHandlers
if (string.IsNullOrEmpty(context.Response.RequestUri))
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
@ -116,7 +116,7 @@ public static partial class OpenIddictServerOwinHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -244,7 +244,7 @@ public static partial class OpenIddictServerOwinHandlers
if (string.IsNullOrEmpty(context.RedirectUri) ||
!string.Equals(context.ResponseMode, ResponseModes.Query, StringComparison.Ordinal))
{
return default;
return ValueTask.CompletedTask;
}
context.Logger.LogInformation(6148, SR.GetResourceString(SR.ID6148), context.RedirectUri, context.Response);
@ -268,7 +268,7 @@ public static partial class OpenIddictServerOwinHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -305,7 +305,7 @@ public static partial class OpenIddictServerOwinHandlers
if (string.IsNullOrEmpty(context.RedirectUri) ||
!string.Equals(context.ResponseMode, ResponseModes.Fragment, StringComparison.Ordinal))
{
return default;
return ValueTask.CompletedTask;
}
context.Logger.LogInformation(6149, SR.GetResourceString(SR.ID6149), context.RedirectUri, context.Response);
@ -332,7 +332,7 @@ public static partial class OpenIddictServerOwinHandlers
response.Redirect(builder.ToString());
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
static bool Contains(StringBuilder builder, char delimiter)
{

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

@ -92,7 +92,7 @@ public static partial class OpenIddictServerOwinHandlers
if (!string.IsNullOrEmpty(context.Response.Error) &&
!string.Equals(context.Response.Error, Errors.AccessDenied, StringComparison.Ordinal))
{
return default;
return ValueTask.CompletedTask;
}
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
@ -104,7 +104,7 @@ public static partial class OpenIddictServerOwinHandlers
context.HandleRequest();
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -73,7 +73,7 @@ public static partial class OpenIddictServerOwinHandlers
if (string.IsNullOrEmpty(context.Response.RequestUri))
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
@ -95,7 +95,7 @@ public static partial class OpenIddictServerOwinHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -131,7 +131,7 @@ public static partial class OpenIddictServerOwinHandlers
if (string.IsNullOrEmpty(context.PostLogoutRedirectUri))
{
return default;
return ValueTask.CompletedTask;
}
context.Logger.LogInformation(6151, SR.GetResourceString(SR.ID6151), context.PostLogoutRedirectUri, context.Response);
@ -155,7 +155,7 @@ public static partial class OpenIddictServerOwinHandlers
response.Redirect(location);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -194,7 +194,7 @@ public static partial class OpenIddictServerOwinHandlers
if (!string.IsNullOrEmpty(context.PostLogoutRedirectUri) ||
!string.IsNullOrEmpty(context.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
@ -206,7 +206,7 @@ public static partial class OpenIddictServerOwinHandlers
context.HandleRequest();
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -14,7 +14,6 @@ using System.Text.Json;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using OpenIddict.Extensions;
using Owin;
using static OpenIddict.Server.Owin.OpenIddictServerOwinConstants;
using Properties = OpenIddict.Server.Owin.OpenIddictServerOwinConstants.Properties;
@ -103,7 +102,7 @@ public static partial class OpenIddictServerOwinHandlers
context.BaseUri = CreateUri(request.Scheme + Uri.SchemeDelimiter + host + request.PathBase);
context.RequestUri = CreateUri(request.Scheme + Uri.SchemeDelimiter + host + request.PathBase + request.Path + request.QueryString);
return default;
return ValueTask.CompletedTask;
// Note: the BCL System.Uri class has strict rules (e.g it rejects specific characters and enforces a
// limit of 65519 characters for the complete URI representation). To ensure no exception is thrown if the
@ -151,10 +150,10 @@ public static partial class OpenIddictServerOwinHandlers
description: SR.GetResourceString(SR.ID2083),
uri: SR.FormatID8000(SR.ID2083));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -197,10 +196,10 @@ public static partial class OpenIddictServerOwinHandlers
description: SR.FormatID2081(Headers.Host),
uri: SR.FormatID8000(SR.ID2081));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -233,7 +232,7 @@ public static partial class OpenIddictServerOwinHandlers
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
if (properties is not { Dictionary.Count: > 0 })
{
return default;
return ValueTask.CompletedTask;
}
// Note: unlike ASP.NET Core, OWIN's AuthenticationProperties doesn't offer a strongly-typed
@ -279,7 +278,7 @@ public static partial class OpenIddictServerOwinHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -317,7 +316,7 @@ public static partial class OpenIddictServerOwinHandlers
context.Response.Scope = GetProperty(properties, Properties.Scope);
}
return default;
return ValueTask.CompletedTask;
static string? GetProperty(AuthenticationProperties properties, string name)
=> properties.Dictionary.TryGetValue(name, out string? value) ? value : null;
@ -353,7 +352,7 @@ public static partial class OpenIddictServerOwinHandlers
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
if (properties is not { Dictionary.Count: > 0 })
{
return default;
return ValueTask.CompletedTask;
}
// Note: unlike ASP.NET Core, OWIN's AuthenticationProperties doesn't offer a strongly-typed
@ -399,7 +398,7 @@ public static partial class OpenIddictServerOwinHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -432,7 +431,7 @@ public static partial class OpenIddictServerOwinHandlers
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
if (properties is not { Dictionary.Count: > 0 })
{
return default;
return ValueTask.CompletedTask;
}
// Note: unlike ASP.NET Core, OWIN's AuthenticationProperties doesn't offer a strongly-typed
@ -478,7 +477,7 @@ public static partial class OpenIddictServerOwinHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -529,10 +528,10 @@ public static partial class OpenIddictServerOwinHandlers
description: SR.GetResourceString(SR.ID2084),
uri: SR.FormatID8000(SR.ID2084));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -744,7 +743,7 @@ public static partial class OpenIddictServerOwinHandlers
description: SR.FormatID2174(ClientAuthenticationMethods.ClientSecretPost),
uri: SR.FormatID8000(SR.ID2174));
return default;
return ValueTask.CompletedTask;
}
// Reject requests that use client_secret_basic if support was explicitly disabled in the options.
@ -759,10 +758,10 @@ public static partial class OpenIddictServerOwinHandlers
description: SR.FormatID2174(ClientAuthenticationMethods.ClientSecretBasic),
uri: SR.FormatID8000(SR.ID2174));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -802,7 +801,7 @@ public static partial class OpenIddictServerOwinHandlers
var header = request.Headers[Headers.Authorization];
if (string.IsNullOrEmpty(header) || !header.StartsWith("Basic ", StringComparison.OrdinalIgnoreCase))
{
return default;
return ValueTask.CompletedTask;
}
// At this point, reject requests that use multiple client authentication methods.
@ -817,7 +816,7 @@ public static partial class OpenIddictServerOwinHandlers
description: SR.GetResourceString(SR.ID2087),
uri: SR.FormatID8000(SR.ID2087));
return default;
return ValueTask.CompletedTask;
}
try
@ -833,14 +832,14 @@ public static partial class OpenIddictServerOwinHandlers
description: SR.GetResourceString(SR.ID2055),
uri: SR.FormatID8000(SR.ID2055));
return default;
return ValueTask.CompletedTask;
}
// Attach the basic authentication credentials to the request message.
context.Transaction.Request.ClientId = UnescapeDataString(data[..index]);
context.Transaction.Request.ClientSecret = UnescapeDataString(data[(index + 1)..]);
return default;
return ValueTask.CompletedTask;
}
catch (Exception exception) when (!OpenIddictHelpers.IsFatal(exception))
@ -850,7 +849,7 @@ public static partial class OpenIddictServerOwinHandlers
description: SR.GetResourceString(SR.ID2055),
uri: SR.FormatID8000(SR.ID2055));
return default;
return ValueTask.CompletedTask;
}
static string? UnescapeDataString(string data)
@ -901,13 +900,13 @@ public static partial class OpenIddictServerOwinHandlers
var header = request.Headers[Headers.Authorization];
if (string.IsNullOrEmpty(header) || !header.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
{
return default;
return ValueTask.CompletedTask;
}
// Attach the access token to the request message.
context.Transaction.Request.AccessToken = header["Bearer ".Length..];
return default;
return ValueTask.CompletedTask;
}
}
@ -947,7 +946,7 @@ public static partial class OpenIddictServerOwinHandlers
case OpenIddictServerEndpointType.Authorization when
context.Options.EnableAuthorizationRequestCaching &&
string.IsNullOrEmpty(context.Transaction.Request?.RequestUri):
return default;
return ValueTask.CompletedTask;
// When end session request caching is enabled and the request doesn't contain a
// request_uri yet, do not enable the pass-through mode to allow OpenIddict to trigger
@ -955,12 +954,12 @@ public static partial class OpenIddictServerOwinHandlers
case OpenIddictServerEndpointType.EndSession when
context.Options.EnableEndSessionRequestCaching &&
string.IsNullOrEmpty(context.Transaction.Request?.RequestUri):
return default;
return ValueTask.CompletedTask;
}
context.SkipRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1026,7 +1025,7 @@ public static partial class OpenIddictServerOwinHandlers
_ => 400
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1079,7 +1078,7 @@ public static partial class OpenIddictServerOwinHandlers
properties : response.Context.Authentication.AuthenticationResponseChallenge?.Properties ?? new());
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1124,7 +1123,7 @@ public static partial class OpenIddictServerOwinHandlers
TrySuppressFormsAuthenticationRedirect(response.Environment);
}
return default;
return ValueTask.CompletedTask;
static void TrySuppressFormsAuthenticationRedirect(IDictionary<string, object> environment)
{
@ -1185,7 +1184,7 @@ public static partial class OpenIddictServerOwinHandlers
response.Headers[Headers.Pragma] = "no-cache";
response.Headers[Headers.Expires] = "Thu, 01 Jan 1970 00:00:00 GMT";
return default;
return ValueTask.CompletedTask;
}
}
@ -1228,7 +1227,7 @@ public static partial class OpenIddictServerOwinHandlers
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
var scheme = (context.EndpointType, context.Transaction.Response.Error) switch
@ -1253,7 +1252,7 @@ public static partial class OpenIddictServerOwinHandlers
if (string.IsNullOrEmpty(scheme))
{
return default;
return ValueTask.CompletedTask;
}
var parameters = new Dictionary<string, string>(StringComparer.Ordinal);
@ -1307,7 +1306,7 @@ public static partial class OpenIddictServerOwinHandlers
response.Headers.Append(Headers.WwwAuthenticate, builder.ToString());
return default;
return ValueTask.CompletedTask;
}
}
@ -1344,13 +1343,13 @@ public static partial class OpenIddictServerOwinHandlers
// If the response doesn't contain a WWW-Authenticate header, don't return an empty response.
if (!response.Headers.ContainsKey(Headers.WwwAuthenticate))
{
return default;
return ValueTask.CompletedTask;
}
context.Logger.LogInformation(6141, SR.GetResourceString(SR.ID6141), context.Transaction.Response);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1447,7 +1446,7 @@ public static partial class OpenIddictServerOwinHandlers
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
// Don't return the state originally sent by the client application.
@ -1455,7 +1454,7 @@ public static partial class OpenIddictServerOwinHandlers
context.SkipRequest();
return default;
return ValueTask.CompletedTask;
}
}
@ -1562,7 +1561,7 @@ public static partial class OpenIddictServerOwinHandlers
context.Logger.LogInformation(6145, SR.GetResourceString(SR.ID6145));
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

1
src/OpenIddict.Server/OpenIddictServerBuilder.cs

@ -13,7 +13,6 @@ using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using OpenIddict.Server;
namespace Microsoft.Extensions.DependencyInjection;

1
src/OpenIddict.Server/OpenIddictServerConfiguration.cs

@ -11,7 +11,6 @@ using System.Text;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Server;

1
src/OpenIddict.Server/OpenIddictServerDispatcher.cs

@ -7,7 +7,6 @@
using System.ComponentModel;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
namespace OpenIddict.Server;

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

@ -11,7 +11,6 @@ using System.Text.Json;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
namespace OpenIddict.Server;
@ -467,10 +466,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2028(Parameters.Request),
uri: SR.FormatID8000(SR.ID2028));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -508,10 +507,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.RequestUri),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
// OpenIddict only supports "request_uri" parameters containing a reference to a request
@ -527,7 +526,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2028(Parameters.RequestUri),
uri: SR.FormatID8000(SR.ID2028));
return default;
return ValueTask.CompletedTask;
}
// Both the OpenID Connect core and OAuth 2.0 JWT-Secured Authorization Request specifications
@ -541,10 +540,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2177(Parameters.ClientId),
uri: SR.FormatID8000(SR.ID2177));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -582,10 +581,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.ClientId),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -677,7 +676,7 @@ public static partial class OpenIddictServerHandlers
var value = context.RequestTokenPrincipal?.GetClaim(Claims.Private.RequestParameters);
if (string.IsNullOrEmpty(value))
{
return default;
return ValueTask.CompletedTask;
}
using var document = JsonDocument.Parse(value);
@ -695,7 +694,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2178(Parameters.ClientId),
uri: SR.FormatID8000(SR.ID2178));
return default;
return ValueTask.CompletedTask;
}
// Note: the "request" and "request_uri" parameters have been initially introduced by the OpenID Connect
@ -717,7 +716,7 @@ public static partial class OpenIddictServerHandlers
context.Request = request;
context.RedirectUri = request.RedirectUri;
return default;
return ValueTask.CompletedTask;
}
}
@ -760,10 +759,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.RedirectUri),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
// Note: when specified, redirect_uri MUST be an absolute URI.
@ -778,7 +777,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2030(Parameters.RedirectUri),
uri: SR.FormatID8000(SR.ID2030));
return default;
return ValueTask.CompletedTask;
}
// Note: when specified, redirect_uri MUST NOT include a fragment component.
@ -793,7 +792,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2031(Parameters.RedirectUri),
uri: SR.FormatID8000(SR.ID2031));
return default;
return ValueTask.CompletedTask;
}
// To prevent issuer fixation attacks where a malicious client would specify an "iss" parameter
@ -813,11 +812,11 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2135(Parameters.RedirectUri, Parameters.Iss),
uri: SR.FormatID8000(SR.ID2135));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -854,7 +853,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// Reject code flow requests if the server is not configured to allow the authorization code grant type.
@ -867,7 +866,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// Reject implicit flow requests if the server is not configured to allow the implicit grant type.
@ -880,7 +879,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// Reject hybrid flow requests if the server is not configured to allow the authorization code or implicit grant types.
@ -894,7 +893,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// Prevent response_type=none from being used with any other value.
@ -909,7 +908,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2052(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2052));
return default;
return ValueTask.CompletedTask;
}
// Reject requests that specify an unsupported response_type.
@ -923,10 +922,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -966,7 +965,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2033(Parameters.ResponseType, Parameters.ResponseMode),
uri: SR.FormatID8000(SR.ID2033));
return default;
return ValueTask.CompletedTask;
}
// Reject requests that specify an unsupported response_mode or don't specify a different response_mode
@ -980,10 +979,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ResponseMode),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
static bool ValidateResponseMode(OpenIddictRequest request, OpenIddictServerOptions options)
{
@ -1045,7 +1044,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2034(Scopes.OpenId),
uri: SR.FormatID8000(SR.ID2034));
return default;
return ValueTask.CompletedTask;
}
// Reject authorization requests that specify scope=offline_access if the refresh token flow is not enabled.
@ -1056,10 +1055,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2035(Scopes.OfflineAccess),
uri: SR.FormatID8000(SR.ID2035));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1095,10 +1094,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2193(Parameters.Audience),
uri: SR.FormatID8000(SR.ID2193));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1139,7 +1138,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2030(Parameters.Resource),
uri: SR.FormatID8000(SR.ID2030));
return default;
return ValueTask.CompletedTask;
}
// Note: resource indicators MUST NOT contain a fragment.
@ -1152,11 +1151,11 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2031(Parameters.Resource),
uri: SR.FormatID8000(SR.ID2031));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1190,7 +1189,7 @@ public static partial class OpenIddictServerHandlers
if (!string.IsNullOrEmpty(context.Request.Nonce) || !context.Request.HasScope(Scopes.OpenId))
{
return default;
return ValueTask.CompletedTask;
}
if (context.Request.IsImplicitFlow() || context.Request.IsHybridFlow())
@ -1202,10 +1201,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.Nonce),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1234,7 +1233,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.Request.Prompt))
{
return default;
return ValueTask.CompletedTask;
}
// Reject requests specifying an unsupported prompt value.
@ -1250,7 +1249,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.Prompt),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
}
@ -1267,10 +1266,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2052(Parameters.Prompt),
uri: SR.FormatID8000(SR.ID2052));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1310,7 +1309,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.CodeChallenge),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// At this point, stop validating the PKCE parameters if both the
@ -1318,7 +1317,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.Request.CodeChallenge) &&
string.IsNullOrEmpty(context.Request.CodeChallengeMethod))
{
return default;
return ValueTask.CompletedTask;
}
// Ensure a code_challenge was specified if a code_challenge_method was used.
@ -1331,7 +1330,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.CodeChallengeMethod, Parameters.CodeChallenge),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// If the plain code challenge method was not explicitly enabled,
@ -1346,7 +1345,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.CodeChallengeMethod),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// If a code_challenge_method was specified, ensure the algorithm is supported.
@ -1360,7 +1359,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.CodeChallengeMethod),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// When code_challenge or code_challenge_method is specified, ensure the response_type includes "code".
@ -1373,10 +1372,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2040(Parameters.CodeChallenge, Parameters.CodeChallengeMethod, ResponseTypes.Code),
uri: SR.FormatID8000(SR.ID2040));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1666,10 +1665,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2190(Parameters.Resource),
uri: SR.FormatID8000(SR.ID2190));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2177,7 +2176,7 @@ public static partial class OpenIddictServerHandlers
if (context.IdentityTokenHintPrincipal is null)
{
return default;
return ValueTask.CompletedTask;
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
@ -2194,10 +2193,10 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2141),
uri: SR.FormatID8000(SR.ID2141));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2231,7 +2230,7 @@ public static partial class OpenIddictServerHandlers
context.IdentityTokenHintPrincipal ??= notification.IdentityTokenHintPrincipal;
return default;
return ValueTask.CompletedTask;
}
}
@ -2263,7 +2262,7 @@ public static partial class OpenIddictServerHandlers
// redirect_uri, as the user agent will be redirected to the same page.
if (context.Request is null || !string.IsNullOrEmpty(context.Response.RequestUri))
{
return default;
return ValueTask.CompletedTask;
}
var notification = context.Transaction.GetProperty<ValidateAuthorizationRequestContext>(
@ -2276,7 +2275,7 @@ public static partial class OpenIddictServerHandlers
context.RedirectUri = notification.RedirectUri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2306,7 +2305,7 @@ public static partial class OpenIddictServerHandlers
if (context.Request is null)
{
return default;
return ValueTask.CompletedTask;
}
context.ResponseMode = context.Request.ResponseMode;
@ -2319,7 +2318,7 @@ public static partial class OpenIddictServerHandlers
context.Request.IsQueryResponseMode() ? ResponseModes.Query : null;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2355,7 +2354,7 @@ public static partial class OpenIddictServerHandlers
context.Response.State = context.Request?.State;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2401,7 +2400,7 @@ public static partial class OpenIddictServerHandlers
};
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2720,10 +2719,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2028(Parameters.Request),
uri: SR.FormatID8000(SR.ID2028));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2762,10 +2761,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2074(Parameters.RequestUri),
uri: SR.FormatID8000(SR.ID2074));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2804,10 +2803,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.ClientId),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2851,10 +2850,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.RedirectUri),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
// Note: when specified, redirect_uri MUST be an absolute URI.
@ -2869,7 +2868,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2030(Parameters.RedirectUri),
uri: SR.FormatID8000(SR.ID2030));
return default;
return ValueTask.CompletedTask;
}
// Note: when specified, redirect_uri MUST NOT include a fragment component.
@ -2884,7 +2883,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2031(Parameters.RedirectUri),
uri: SR.FormatID8000(SR.ID2031));
return default;
return ValueTask.CompletedTask;
}
// To prevent issuer fixation attacks where a malicious client would specify an "iss" parameter
@ -2904,11 +2903,11 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2135(Parameters.RedirectUri, Parameters.Iss),
uri: SR.FormatID8000(SR.ID2135));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2946,7 +2945,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// Reject code flow requests if the server is not configured to allow the authorization code grant type.
@ -2959,7 +2958,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// Reject implicit flow requests if the server is not configured to allow the implicit grant type.
@ -2972,7 +2971,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// Reject hybrid flow requests if the server is not configured to allow the authorization code or implicit grant types.
@ -2986,7 +2985,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// Prevent response_type=none from being used with any other value.
@ -3001,7 +3000,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2052(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2052));
return default;
return ValueTask.CompletedTask;
}
// Reject requests that specify an unsupported response_type.
@ -3015,10 +3014,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ResponseType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -3059,7 +3058,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2033(Parameters.ResponseType, Parameters.ResponseMode),
uri: SR.FormatID8000(SR.ID2033));
return default;
return ValueTask.CompletedTask;
}
// Reject requests that specify an unsupported response_mode or don't specify a different response_mode
@ -3073,10 +3072,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ResponseMode),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
static bool ValidatePushedResponseMode(OpenIddictRequest request, OpenIddictServerOptions options)
{
@ -3139,7 +3138,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2034(Scopes.OpenId),
uri: SR.FormatID8000(SR.ID2034));
return default;
return ValueTask.CompletedTask;
}
// Reject pushed authorization requests that specify scope=offline_access if the refresh token flow is not enabled.
@ -3150,10 +3149,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2035(Scopes.OfflineAccess),
uri: SR.FormatID8000(SR.ID2035));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -3189,10 +3188,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2194(Parameters.Audience),
uri: SR.FormatID8000(SR.ID2194));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -3233,7 +3232,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2030(Parameters.Resource),
uri: SR.FormatID8000(SR.ID2030));
return default;
return ValueTask.CompletedTask;
}
// Note: resource indicators MUST NOT contain a fragment.
@ -3246,11 +3245,11 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2031(Parameters.Resource),
uri: SR.FormatID8000(SR.ID2031));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -3284,7 +3283,7 @@ public static partial class OpenIddictServerHandlers
if (!string.IsNullOrEmpty(context.Request.Nonce) || !context.Request.HasScope(Scopes.OpenId))
{
return default;
return ValueTask.CompletedTask;
}
if (context.Request.IsImplicitFlow() || context.Request.IsHybridFlow())
@ -3296,10 +3295,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.Nonce),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -3328,7 +3327,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.Request.Prompt))
{
return default;
return ValueTask.CompletedTask;
}
// Reject requests specifying an unsupported prompt value.
@ -3344,7 +3343,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.Prompt),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
}
@ -3361,10 +3360,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2052(Parameters.Prompt),
uri: SR.FormatID8000(SR.ID2052));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -3404,7 +3403,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.CodeChallenge),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// At this point, stop validating the PKCE parameters if both the
@ -3412,7 +3411,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.Request.CodeChallenge) &&
string.IsNullOrEmpty(context.Request.CodeChallengeMethod))
{
return default;
return ValueTask.CompletedTask;
}
// Ensure a code_challenge was specified if a code_challenge_method was used.
@ -3425,7 +3424,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.CodeChallengeMethod, Parameters.CodeChallenge),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// If the plain code challenge method was not explicitly enabled,
@ -3440,7 +3439,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.CodeChallengeMethod),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// If a code_challenge_method was specified, ensure the algorithm is supported.
@ -3454,7 +3453,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.CodeChallengeMethod),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// When code_challenge or code_challenge_method is specified, ensure the response_type includes "code".
@ -3467,10 +3466,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2040(Parameters.CodeChallenge, Parameters.CodeChallengeMethod, ResponseTypes.Code),
uri: SR.FormatID8000(SR.ID2040));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -3821,10 +3820,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2190(Parameters.Resource),
uri: SR.FormatID8000(SR.ID2190));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -4262,7 +4261,7 @@ public static partial class OpenIddictServerHandlers
if (context.IdentityTokenHintPrincipal is null)
{
return default;
return ValueTask.CompletedTask;
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
@ -4279,10 +4278,10 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2141),
uri: SR.FormatID8000(SR.ID2141));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -4316,7 +4315,7 @@ public static partial class OpenIddictServerHandlers
context.IdentityTokenHintPrincipal ??= notification.IdentityTokenHintPrincipal;
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -10,7 +10,6 @@ using System.Security.Claims;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
namespace OpenIddict.Server;
@ -363,10 +362,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2035(Scopes.OfflineAccess),
uri: SR.FormatID8000(SR.ID2035));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -402,7 +401,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.ClientAssertionType, Parameters.ClientAssertion),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// Ensure a client_assertion is specified when a client_assertion_type was attached.
@ -414,7 +413,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.ClientAssertion, Parameters.ClientAssertionType),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// Reject requests that use multiple client authentication methods.
@ -430,7 +429,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2087),
uri: SR.FormatID8000(SR.ID2087));
return default;
return ValueTask.CompletedTask;
}
// Ensure the specified client_assertion_type is supported.
@ -442,10 +441,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ClientAssertionType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1135,7 +1134,7 @@ public static partial class OpenIddictServerHandlers
context.UserCodePrincipal ??= notification.UserCodePrincipal;
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -10,7 +10,6 @@ using System.Security.Cryptography;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Server;
@ -351,7 +350,7 @@ public static partial class OpenIddictServerHandlers
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0496))
};
return default;
return ValueTask.CompletedTask;
}
}
@ -408,7 +407,7 @@ public static partial class OpenIddictServerHandlers
context.UserInfoEndpoint ??= OpenIddictHelpers.CreateAbsoluteUri(
context.BaseUri, context.Options.UserInfoEndpointUris.FirstOrDefault());
return default;
return ValueTask.CompletedTask;
}
}
@ -437,7 +436,7 @@ public static partial class OpenIddictServerHandlers
context.GrantTypes.UnionWith(context.Options.GrantTypes);
return default;
return ValueTask.CompletedTask;
}
}
@ -466,7 +465,7 @@ public static partial class OpenIddictServerHandlers
context.ResponseTypes.UnionWith(context.Options.ResponseTypes);
return default;
return ValueTask.CompletedTask;
}
}
@ -496,7 +495,7 @@ public static partial class OpenIddictServerHandlers
// Only include the response modes if at least one response type is returned.
if (context.ResponseTypes.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// Note: returning an access or identity token using the query response mode is explicitly disallowed.
@ -514,7 +513,7 @@ public static partial class OpenIddictServerHandlers
context.ResponseModes.UnionWith(context.Options.ResponseModes.Where(
static mode => mode is not ResponseModes.Query));
return default;
return ValueTask.CompletedTask;
}
}
@ -571,7 +570,7 @@ public static partial class OpenIddictServerHandlers
context.TokenEndpointAuthenticationMethods.UnionWith(context.Options.ClientAuthenticationMethods);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -605,7 +604,7 @@ public static partial class OpenIddictServerHandlers
context.CodeChallengeMethods.UnionWith(context.Options.CodeChallengeMethods);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -634,7 +633,7 @@ public static partial class OpenIddictServerHandlers
context.Scopes.UnionWith(context.Options.Scopes);
return default;
return ValueTask.CompletedTask;
}
}
@ -663,7 +662,7 @@ public static partial class OpenIddictServerHandlers
context.Claims.UnionWith(context.Options.Claims);
return default;
return ValueTask.CompletedTask;
}
}
@ -692,7 +691,7 @@ public static partial class OpenIddictServerHandlers
context.SubjectTypes.UnionWith(context.Options.SubjectTypes);
return default;
return ValueTask.CompletedTask;
}
}
@ -721,7 +720,7 @@ public static partial class OpenIddictServerHandlers
context.PromptValues.UnionWith(context.Options.PromptValues);
return default;
return ValueTask.CompletedTask;
}
}
@ -787,7 +786,7 @@ public static partial class OpenIddictServerHandlers
context.IdTokenSigningAlgorithms.Add(algorithm);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -816,7 +815,7 @@ public static partial class OpenIddictServerHandlers
context.RequirePushedAuthorizationRequests = context.Options.RequirePushedAuthorizationRequests;
return default;
return ValueTask.CompletedTask;
}
}
@ -855,7 +854,7 @@ public static partial class OpenIddictServerHandlers
// see https://datatracker.ietf.org/doc/html/draft-ietf-oauth-iss-auth-resp-05.
context.Metadata[Metadata.AuthorizationResponseIssParameterSupported] = true;
return default;
return ValueTask.CompletedTask;
}
}
@ -1343,7 +1342,7 @@ public static partial class OpenIddictServerHandlers
context.Keys.Add(key);
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -13,7 +13,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Server;
@ -376,7 +375,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.GrantType),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// Reject token requests that don't specify a supported grant type.
@ -389,7 +388,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.GrantType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// Reject token requests that specify scope=offline_access if the refresh token flow is not enabled.
@ -401,10 +400,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2035(Scopes.OfflineAccess),
uri: SR.FormatID8000(SR.ID2035));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -447,7 +446,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.ClientId),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// Reject grant_type=client_credentials requests that don't specify a client_id or a client_assertion.
@ -464,10 +463,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.ClientId),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -506,10 +505,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.Code),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -545,7 +544,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.ClientAssertionType, Parameters.ClientAssertion),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// Ensure a client_assertion is specified when a client_assertion_type was attached.
@ -557,7 +556,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.ClientAssertion, Parameters.ClientAssertionType),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// Reject requests that use multiple client authentication methods.
@ -573,7 +572,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2087),
uri: SR.FormatID8000(SR.ID2087));
return default;
return ValueTask.CompletedTask;
}
// Ensure the specified client_assertion_type is supported.
@ -585,7 +584,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ClientAssertionType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// Reject grant_type=client_credentials requests missing the client credentials.
@ -600,10 +599,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2057(Parameters.ClientSecret, Parameters.ClientAssertion),
uri: SR.FormatID8000(SR.ID2057));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -640,10 +639,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2058(Parameters.DeviceCode),
uri: SR.FormatID8000(SR.ID2058));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -682,10 +681,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.RefreshToken),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -715,7 +714,7 @@ public static partial class OpenIddictServerHandlers
if (!context.Request.IsTokenExchangeGrantType())
{
return default;
return ValueTask.CompletedTask;
}
// Reject token exchange requests missing the mandatory subject token.
@ -730,7 +729,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.SubjectToken),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// Reject token exchange requests missing the mandatory subject token type.
@ -743,7 +742,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.SubjectTokenType),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
// Reject token exchange requests that specify an actor token but don't include an actor token type.
@ -757,7 +756,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.ActorToken, Parameters.ActorTokenType),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// Reject token exchange requests that specify an actor token type but don't include an actor token.
@ -771,7 +770,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.ActorTokenType, Parameters.ActorToken),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// Reject token exchange requests that specify an unsupported subject token type.
@ -782,7 +781,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.SubjectTokenType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// Reject token exchange requests that specify an unsupported actor token type.
@ -794,7 +793,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ActorTokenType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
// Reject token exchange requests that specify an unsupported requested token type.
@ -806,10 +805,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.RequestedTokenType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -849,10 +848,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2059(Parameters.Username, Parameters.Password),
uri: SR.FormatID8000(SR.ID2059));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -881,7 +880,7 @@ public static partial class OpenIddictServerHandlers
if (!context.Request.IsAuthorizationCodeGrantType())
{
return default;
return ValueTask.CompletedTask;
}
// Optimization: the ValidateCodeVerifier event handler automatically rejects grant_type=authorization_code
@ -897,10 +896,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.CodeVerifier),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -944,10 +943,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2074(Parameters.Scope),
uri: SR.FormatID8000(SR.ID2074));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -976,7 +975,7 @@ public static partial class OpenIddictServerHandlers
if (context.Request.Audiences is null or [])
{
return default;
return ValueTask.CompletedTask;
}
// Prevent audiences parameters from being attached to token requests that don't use the
@ -990,10 +989,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2195(Parameters.Audience),
uri: SR.FormatID8000(SR.ID2195));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1034,7 +1033,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2030(Parameters.Resource),
uri: SR.FormatID8000(SR.ID2030));
return default;
return ValueTask.CompletedTask;
}
// Note: resource indicators MUST NOT contain a fragment.
@ -1047,11 +1046,11 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2031(Parameters.Resource),
uri: SR.FormatID8000(SR.ID2031));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1171,10 +1170,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2190(Parameters.Audience),
uri: SR.FormatID8000(SR.ID2190));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1215,10 +1214,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2190(Parameters.Resource),
uri: SR.FormatID8000(SR.ID2190));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1715,7 +1714,7 @@ public static partial class OpenIddictServerHandlers
//
// See https://tools.ietf.org/html/rfc6749#section-6
// and http://openid.net/specs/openid-connect-core-1_0.html#RefreshingAccessToken for more information.
return default;
return ValueTask.CompletedTask;
}
// If at least one presenter was associated to the authorization code/device code/refresh token,
@ -1739,7 +1738,7 @@ public static partial class OpenIddictServerHandlers
_ => SR.FormatID8000(SR.ID2068)
});
return default;
return ValueTask.CompletedTask;
}
// Ensure the authorization code/device code/refresh token was issued to the client making the token request.
@ -1762,7 +1761,7 @@ public static partial class OpenIddictServerHandlers
_ => SR.FormatID8000(SR.ID2071)
});
return default;
return ValueTask.CompletedTask;
}
}
@ -1791,7 +1790,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2186),
uri: SR.FormatID8000(SR.ID2186));
return default;
return ValueTask.CompletedTask;
}
// Reject the request if the caller is neither a valid audience nor a valid presenter.
@ -1805,7 +1804,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2187),
uri: SR.FormatID8000(SR.ID2187));
return default;
return ValueTask.CompletedTask;
}
break;
@ -1830,7 +1829,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2186),
uri: SR.FormatID8000(SR.ID2186));
return default;
return ValueTask.CompletedTask;
}
// Reject the request if the caller is not a valid presenter.
@ -1843,7 +1842,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2187),
uri: SR.FormatID8000(SR.ID2187));
return default;
return ValueTask.CompletedTask;
}
break;
@ -1877,7 +1876,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2188),
uri: SR.FormatID8000(SR.ID2188));
return default;
return ValueTask.CompletedTask;
}
// Reject the request if the caller is neither a valid audience nor a valid presenter.
@ -1891,7 +1890,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2189),
uri: SR.FormatID8000(SR.ID2189));
return default;
return ValueTask.CompletedTask;
}
break;
@ -1916,7 +1915,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2188),
uri: SR.FormatID8000(SR.ID2188));
return default;
return ValueTask.CompletedTask;
}
// Reject the request if the caller is not a valid presenter.
@ -1929,7 +1928,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2189),
uri: SR.FormatID8000(SR.ID2189));
return default;
return ValueTask.CompletedTask;
}
break;
@ -1941,7 +1940,7 @@ public static partial class OpenIddictServerHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1970,7 +1969,7 @@ public static partial class OpenIddictServerHandlers
if (!context.Request.IsAuthorizationCodeGrantType())
{
return default;
return ValueTask.CompletedTask;
}
Debug.Assert(context.AuthorizationCodePrincipal is { Identity: ClaimsIdentity }, SR.GetResourceString(SR.ID4006));
@ -1985,7 +1984,7 @@ public static partial class OpenIddictServerHandlers
var uri = context.AuthorizationCodePrincipal.GetClaim(Claims.Private.RedirectUri);
if (string.IsNullOrEmpty(uri))
{
return default;
return ValueTask.CompletedTask;
}
if (string.IsNullOrEmpty(context.Request.RedirectUri))
@ -1997,7 +1996,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.RedirectUri),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
if (!string.Equals(uri, context.Request.RedirectUri, StringComparison.Ordinal))
@ -2009,10 +2008,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2072(Parameters.RedirectUri),
uri: SR.FormatID8000(SR.ID2072));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2041,7 +2040,7 @@ public static partial class OpenIddictServerHandlers
if (!context.Request.IsAuthorizationCodeGrantType())
{
return default;
return ValueTask.CompletedTask;
}
Debug.Assert(context.AuthorizationCodePrincipal is { Identity: ClaimsIdentity }, SR.GetResourceString(SR.ID4006));
@ -2066,10 +2065,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2073(Parameters.CodeVerifier, Parameters.CodeChallenge),
uri: SR.FormatID8000(SR.ID2073));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
// Get the code verifier from the token request. If it cannot be found, return an invalid_grant error.
@ -2082,7 +2081,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.CodeVerifier),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
var comparand = context.AuthorizationCodePrincipal.GetClaim(Claims.Private.CodeChallengeMethod) switch
@ -2112,10 +2111,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2052(Parameters.CodeVerifier),
uri: SR.FormatID8000(SR.ID2052));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2145,7 +2144,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.Request.Scope) || !context.Request.IsRefreshTokenGrantType())
{
return default;
return ValueTask.CompletedTask;
}
Debug.Assert(context.RefreshTokenPrincipal is { Identity: ClaimsIdentity }, SR.GetResourceString(SR.ID4006));
@ -2163,7 +2162,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2074(Parameters.Scope),
uri: SR.FormatID8000(SR.ID2074));
return default;
return ValueTask.CompletedTask;
}
// When an explicit scope parameter has been included in the token request,
@ -2179,10 +2178,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2052(Parameters.Scope),
uri: SR.FormatID8000(SR.ID2052));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2215,7 +2214,7 @@ public static partial class OpenIddictServerHandlers
!context.Request.IsRefreshTokenGrantType() &&
!context.Request.IsTokenExchangeGrantType())
{
return default;
return ValueTask.CompletedTask;
}
var notification = context.Transaction.GetProperty<ValidateTokenRequestContext>(
@ -2247,7 +2246,7 @@ public static partial class OpenIddictServerHandlers
_ => null
};
return default;
return ValueTask.CompletedTask;
}
}
@ -2276,7 +2275,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.Error))
{
return default;
return ValueTask.CompletedTask;
}
// If the error indicates an invalid token, return a standard invalid_grant.
@ -2286,7 +2285,7 @@ public static partial class OpenIddictServerHandlers
context.Request.IsRefreshTokenGrantType() ||
context.Request.IsTokenExchangeGrantType()))
{
return default;
return ValueTask.CompletedTask;
}
context.Response.Error = context.Error switch
@ -2300,7 +2299,7 @@ public static partial class OpenIddictServerHandlers
_ => context.Error // Otherwise, keep the error as-is.
};
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -362,10 +362,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.Token),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -401,7 +401,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.ClientAssertionType, Parameters.ClientAssertion),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// Ensure a client_assertion is specified when a client_assertion_type was attached.
@ -413,7 +413,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.ClientAssertion, Parameters.ClientAssertionType),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// Reject requests that use multiple client authentication methods.
@ -429,7 +429,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2087),
uri: SR.FormatID8000(SR.ID2087));
return default;
return ValueTask.CompletedTask;
}
// Ensure the specified client_assertion_type is supported.
@ -441,10 +441,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ClientAssertionType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -599,10 +599,10 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2076),
uri: SR.FormatID8000(SR.ID2076));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -652,7 +652,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2077),
uri: SR.FormatID8000(SR.ID2077));
return default;
return ValueTask.CompletedTask;
}
// When the introspected token is a refresh token, the caller must be
@ -669,10 +669,10 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2077),
uri: SR.FormatID8000(SR.ID2077));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -708,7 +708,7 @@ public static partial class OpenIddictServerHandlers
context.GenericTokenPrincipal ??= notification.GenericTokenPrincipal;
return default;
return ValueTask.CompletedTask;
}
}
@ -776,7 +776,7 @@ public static partial class OpenIddictServerHandlers
context.TokenType = TokenTypes.Bearer;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -973,7 +973,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.Error))
{
return default;
return ValueTask.CompletedTask;
}
// If the error indicates an invalid token, remove the error details and only return active: false,
@ -990,7 +990,7 @@ public static partial class OpenIddictServerHandlers
context.Response[Claims.Active] = false;
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -13,7 +13,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.JsonWebTokens;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Server;
@ -264,7 +263,7 @@ public static partial class OpenIddictServerHandlers
context.SecurityTokenHandler = context.Options.JsonWebTokenHandler;
context.TokenValidationParameters = parameters;
return default;
return ValueTask.CompletedTask;
}
}
@ -294,7 +293,7 @@ public static partial class OpenIddictServerHandlers
// If no character was explicitly added, all characters are considered valid.
if (context.AllowedCharset.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// Remove the disallowed characters from the token string. If the token is
@ -307,12 +306,12 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2004),
uri: SR.FormatID8000(SR.ID2004));
return default;
return ValueTask.CompletedTask;
}
context.Token = token;
return default;
return ValueTask.CompletedTask;
}
}
@ -632,7 +631,7 @@ public static partial class OpenIddictServerHandlers
if (context.Principal is null)
{
return default;
return ValueTask.CompletedTask;
}
// Note: in previous OpenIddict versions, scopes were represented as a JSON array
@ -648,7 +647,7 @@ public static partial class OpenIddictServerHandlers
context.Principal.SetClaim(Claims.Scope, string.Join(" ", scopes));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -677,7 +676,7 @@ public static partial class OpenIddictServerHandlers
if (context.Principal is null)
{
return default;
return ValueTask.CompletedTask;
}
// To reduce the size of tokens, some of the private claims used by OpenIddict
@ -751,7 +750,7 @@ public static partial class OpenIddictServerHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -906,7 +905,7 @@ public static partial class OpenIddictServerHandlers
});
return default;
return ValueTask.CompletedTask;
}
// When using JWT or Data Protection tokens, the correct token type is always enforced by IdentityModel
@ -924,7 +923,7 @@ public static partial class OpenIddictServerHandlers
throw new InvalidOperationException(SR.FormatID0005(type, string.Join(", ", context.ValidTokenTypes)));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -981,10 +980,10 @@ public static partial class OpenIddictServerHandlers
_ => SR.FormatID8000(SR.ID2019)
});
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1017,7 +1016,7 @@ public static partial class OpenIddictServerHandlers
// If no specific value is expected, skip the default presenter validation.
if (context.ValidPresenters.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't have any presenter attached, return an error.
@ -1031,7 +1030,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2184),
uri: SR.FormatID8000(SR.ID2184));
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't include any registered presenter, return an error.
@ -1044,10 +1043,10 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2185),
uri: SR.FormatID8000(SR.ID2185));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1080,7 +1079,7 @@ public static partial class OpenIddictServerHandlers
// If no specific value is expected, skip the default audience validation.
if (context.ValidAudiences.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't have any audience attached, return an error.
@ -1094,7 +1093,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2093),
uri: SR.FormatID8000(SR.ID2093));
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't include any registered audience, return an error.
@ -1107,10 +1106,10 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2094),
uri: SR.FormatID8000(SR.ID2094));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1409,7 +1408,7 @@ public static partial class OpenIddictServerHandlers
_ => context.Options.SigningCredentials.First()
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1552,7 +1551,7 @@ public static partial class OpenIddictServerHandlers
context.SecurityTokenDescriptor.Subject = (ClaimsIdentity) principal.Identity;
return default;
return ValueTask.CompletedTask;
}
}
@ -1668,7 +1667,7 @@ public static partial class OpenIddictServerHandlers
string value => value
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1699,7 +1698,7 @@ public static partial class OpenIddictServerHandlers
// If a token was already attached by another handler, don't overwrite it.
if (!string.IsNullOrEmpty(context.Token))
{
return default;
return ValueTask.CompletedTask;
}
context.Token = context.SecurityTokenHandler.CreateToken(context.SecurityTokenDescriptor);
@ -1707,7 +1706,7 @@ public static partial class OpenIddictServerHandlers
context.Logger.LogTrace(6013, SR.GetResourceString(SR.ID6013), context.TokenType,
context.Token, context.SecurityTokenDescriptor.Subject?.Claims ?? []);
return default;
return ValueTask.CompletedTask;
}
}

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

@ -309,10 +309,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.Token),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -348,7 +348,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.ClientAssertionType, Parameters.ClientAssertion),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// Ensure a client_assertion is specified when a client_assertion_type was attached.
@ -360,7 +360,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2037(Parameters.ClientAssertion, Parameters.ClientAssertionType),
uri: SR.FormatID8000(SR.ID2037));
return default;
return ValueTask.CompletedTask;
}
// Reject requests that use multiple client authentication methods.
@ -376,7 +376,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2087),
uri: SR.FormatID8000(SR.ID2087));
return default;
return ValueTask.CompletedTask;
}
// Ensure the specified client_assertion_type is supported.
@ -388,10 +388,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2032(Parameters.ClientAssertionType),
uri: SR.FormatID8000(SR.ID2032));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -546,10 +546,10 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2079),
uri: SR.FormatID8000(SR.ID2079));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -599,7 +599,7 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2080),
uri: SR.FormatID8000(SR.ID2080));
return default;
return ValueTask.CompletedTask;
}
// When the revoked token is a refresh token, the caller must be
@ -616,10 +616,10 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2080),
uri: SR.FormatID8000(SR.ID2080));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -655,7 +655,7 @@ public static partial class OpenIddictServerHandlers
context.GenericTokenPrincipal ??= notification.GenericTokenPrincipal;
return default;
return ValueTask.CompletedTask;
}
}
@ -758,7 +758,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.Error))
{
return default;
return ValueTask.CompletedTask;
}
// If the error indicates an invalid token, remove the error details, as required by the revocation
@ -773,7 +773,7 @@ public static partial class OpenIddictServerHandlers
context.Response.ErrorUri = null;
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -12,7 +12,6 @@ using System.Text.Json;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
namespace OpenIddict.Server;
@ -389,7 +388,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.Request.RequestUri))
{
return default;
return ValueTask.CompletedTask;
}
// OpenIddict only supports "request_uri" parameters containing a reference to a request token
@ -402,13 +401,13 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2028(Parameters.RequestUri),
uri: SR.FormatID8000(SR.ID2028));
return default;
return ValueTask.CompletedTask;
}
// Note: unlike authorization requests, the client_id parameter is not required for end
// session requests and may not be present in the original request before it is cached.
return default;
return ValueTask.CompletedTask;
}
}
@ -437,7 +436,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.PostLogoutRedirectUri))
{
return default;
return ValueTask.CompletedTask;
}
// If an optional post_logout_redirect_uri was provided, validate it.
@ -450,7 +449,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2030(Parameters.PostLogoutRedirectUri),
uri: SR.FormatID8000(SR.ID2030));
return default;
return ValueTask.CompletedTask;
}
if (!string.IsNullOrEmpty(uri.Fragment))
@ -462,10 +461,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2031(Parameters.PostLogoutRedirectUri),
uri: SR.FormatID8000(SR.ID2031));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -557,7 +556,7 @@ public static partial class OpenIddictServerHandlers
var value = context.RequestTokenPrincipal?.GetClaim(Claims.Private.RequestParameters);
if (string.IsNullOrEmpty(value))
{
return default;
return ValueTask.CompletedTask;
}
using var document = JsonDocument.Parse(value);
@ -569,7 +568,7 @@ public static partial class OpenIddictServerHandlers
context.Request = request;
context.PostLogoutRedirectUri = request.PostLogoutRedirectUri;
return default;
return ValueTask.CompletedTask;
}
}
@ -947,7 +946,7 @@ public static partial class OpenIddictServerHandlers
context.IdentityTokenHintPrincipal ??= notification.IdentityTokenHintPrincipal;
return default;
return ValueTask.CompletedTask;
}
}
@ -979,7 +978,7 @@ public static partial class OpenIddictServerHandlers
// post_logout_redirect_uri, as the user agent will be redirected to the same page.
if (context.Request is null || !string.IsNullOrEmpty(context.Response.RequestUri))
{
return default;
return ValueTask.CompletedTask;
}
var notification = context.Transaction.GetProperty<ValidateEndSessionRequestContext>(
@ -992,7 +991,7 @@ public static partial class OpenIddictServerHandlers
context.PostLogoutRedirectUri = notification.PostLogoutRedirectUri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -1028,7 +1027,7 @@ public static partial class OpenIddictServerHandlers
context.Response.State = context.Request?.State;
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -336,10 +336,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2029(Parameters.AccessToken),
uri: SR.FormatID8000(SR.ID2029));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -436,7 +436,7 @@ public static partial class OpenIddictServerHandlers
context.AccessTokenPrincipal ??= notification.AccessTokenPrincipal;
return default;
return ValueTask.CompletedTask;
}
}
@ -470,7 +470,7 @@ public static partial class OpenIddictServerHandlers
// See http://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse
context.Audiences.UnionWith(context.AccessTokenPrincipal.GetPresenters());
return default;
return ValueTask.CompletedTask;
}
}
@ -529,7 +529,7 @@ public static partial class OpenIddictServerHandlers
context.PhoneNumber = context.AccessTokenPrincipal.GetClaim(Claims.PhoneNumber);
}
return default;
return ValueTask.CompletedTask;
}
}
}

91
src/OpenIddict.Server/OpenIddictServerHandlers.cs

@ -16,7 +16,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.JsonWebTokens;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Server;
@ -159,7 +158,7 @@ public static partial class OpenIddictServerHandlers
// If the base or request URIs couldn't be resolved, don't try to infer the endpoint type.
if (context is not { BaseUri.IsAbsoluteUri: true, RequestUri.IsAbsoluteUri: true })
{
return default;
return ValueTask.CompletedTask;
}
context.EndpointType =
@ -181,7 +180,7 @@ public static partial class OpenIddictServerHandlers
context.Logger.LogInformation(6053, SR.GetResourceString(SR.ID6053), context.EndpointType);
}
return default;
return ValueTask.CompletedTask;
bool Matches(IReadOnlyList<Uri> candidates)
{
@ -430,7 +429,7 @@ public static partial class OpenIddictServerHandlers
_ => (false, false, false, false)
};
return default;
return ValueTask.CompletedTask;
}
}
@ -560,7 +559,7 @@ public static partial class OpenIddictServerHandlers
_ => null
};
return default;
return ValueTask.CompletedTask;
}
}
@ -606,10 +605,10 @@ public static partial class OpenIddictServerHandlers
description: SR.GetResourceString(SR.ID2000),
uri: SR.FormatID8000(SR.ID2000));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -731,7 +730,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2171(group.Key),
uri: SR.FormatID8000(SR.ID2171));
return default;
return ValueTask.CompletedTask;
}
// Client assertions MUST contain an "iss" claim. For more information,
@ -744,7 +743,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2172(Claims.Issuer),
uri: SR.FormatID8000(SR.ID2172));
return default;
return ValueTask.CompletedTask;
}
// Client assertions MUST contain a "sub" claim. For more information,
@ -757,7 +756,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2172(Claims.Subject),
uri: SR.FormatID8000(SR.ID2172));
return default;
return ValueTask.CompletedTask;
}
// Client assertions MUST contain an "aud" claim. For more information,
@ -770,7 +769,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2172(Claims.Audience),
uri: SR.FormatID8000(SR.ID2172));
return default;
return ValueTask.CompletedTask;
}
// Client assertions MUST contain contain a "exp" claim. For more information,
@ -783,10 +782,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2172(Claims.ExpiresAt),
uri: SR.FormatID8000(SR.ID2172));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
static bool ValidateClaimGroup(string name, List<Claim> values) => name switch
{
@ -851,7 +850,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2173(Claims.Subject),
uri: SR.FormatID8000(SR.ID2173));
return default;
return ValueTask.CompletedTask;
}
// If a client identifier was also specified in the request, ensure the
@ -865,7 +864,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2173(Claims.Issuer),
uri: SR.FormatID8000(SR.ID2173));
return default;
return ValueTask.CompletedTask;
}
if (!string.Equals(context.ClientId, subject, StringComparison.Ordinal))
@ -875,7 +874,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2173(Claims.Subject),
uri: SR.FormatID8000(SR.ID2173));
return default;
return ValueTask.CompletedTask;
}
}
@ -885,7 +884,7 @@ public static partial class OpenIddictServerHandlers
request.ClientId = context.ClientAssertionPrincipal.GetClaim(Claims.Issuer);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -930,7 +929,7 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2172(Claims.Audience),
uri: SR.FormatID8000(SR.ID2172));
return default;
return ValueTask.CompletedTask;
}
// Throw an exception if the issuer cannot be retrieved or is not valid.
@ -947,10 +946,10 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2173(Claims.Audience),
uri: SR.FormatID8000(SR.ID2173));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
static bool UriEquals(Uri left, Uri right)
{
@ -1379,13 +1378,13 @@ public static partial class OpenIddictServerHandlers
description: SR.FormatID2182(Parameters.RequestUri),
uri: SR.FormatID8000(SR.ID2182));
return default;
return ValueTask.CompletedTask;
// For other endpoints that don't natively support request tokens, don't return an error
// to allow custom implementations to use request tokens with other types of endpoints.
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2244,7 +2243,7 @@ public static partial class OpenIddictServerHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2316,7 +2315,7 @@ public static partial class OpenIddictServerHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2352,7 +2351,7 @@ public static partial class OpenIddictServerHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0006));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2418,7 +2417,7 @@ public static partial class OpenIddictServerHandlers
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0006))
};
return default;
return ValueTask.CompletedTask;
}
}
@ -2572,7 +2571,7 @@ public static partial class OpenIddictServerHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2666,7 +2665,7 @@ public static partial class OpenIddictServerHandlers
throw new InvalidOperationException(SR.FormatID0424(group.Key));
}
return default;
return ValueTask.CompletedTask;
static bool ValidateClaimGroup(string name, List<Claim> values) => name switch
{
@ -2882,7 +2881,7 @@ public static partial class OpenIddictServerHandlers
case OpenIddictServerEndpointType.Token when context.Request.IsRefreshTokenGrantType():
break;
default: return default;
default: return ValueTask.CompletedTask;
}
var identity = (ClaimsIdentity) context.Principal.Identity;
@ -2909,7 +2908,7 @@ public static partial class OpenIddictServerHandlers
if (principal is null)
{
return default;
return ValueTask.CompletedTask;
}
// Restore the internal claims resolved from the token.
@ -2933,7 +2932,7 @@ public static partial class OpenIddictServerHandlers
identity.AddClaims(claims);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -2964,7 +2963,7 @@ public static partial class OpenIddictServerHandlers
context.Principal.SetClaim(Claims.Private.HostProperties, context.Properties);
return default;
return ValueTask.CompletedTask;
}
}
@ -3001,7 +3000,7 @@ public static partial class OpenIddictServerHandlers
context.Principal.SetScopes(Scopes.OpenId);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -3037,7 +3036,7 @@ public static partial class OpenIddictServerHandlers
context.Principal.SetPresenters(context.ClientId);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -3075,7 +3074,7 @@ public static partial class OpenIddictServerHandlers
// Reset the audiences collection, as it's set later, based on the token type.
context.Principal.SetAudiences([]);
return default;
return ValueTask.CompletedTask;
}
}
@ -3253,7 +3252,7 @@ public static partial class OpenIddictServerHandlers
_ => (false, false)
};
return default;
return ValueTask.CompletedTask;
}
}
@ -5050,7 +5049,7 @@ public static partial class OpenIddictServerHandlers
context.UserCodePrincipal.SetClaim(Claims.Private.DeviceCodeId, identifier);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -5161,7 +5160,7 @@ public static partial class OpenIddictServerHandlers
if (string.IsNullOrEmpty(context.AccessToken) && string.IsNullOrEmpty(context.AuthorizationCode))
{
return default;
return ValueTask.CompletedTask;
}
var credentials = context.Options.SigningCredentials.Find(
@ -5186,7 +5185,7 @@ public static partial class OpenIddictServerHandlers
context.IdentityTokenPrincipal.SetClaim(Claims.CodeHash, Base64UrlEncoder.Encode(digest, 0, digest.Length / 2));
}
return default;
return ValueTask.CompletedTask;
static byte[] ComputeTokenHash(SigningCredentials credentials, string token) => credentials switch
{
@ -5412,7 +5411,7 @@ public static partial class OpenIddictServerHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -5577,7 +5576,7 @@ public static partial class OpenIddictServerHandlers
};
}
return default;
return ValueTask.CompletedTask;
}
}
@ -5613,7 +5612,7 @@ public static partial class OpenIddictServerHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -5646,7 +5645,7 @@ public static partial class OpenIddictServerHandlers
throw new InvalidOperationException(SR.GetResourceString(SR.ID0024));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -5748,7 +5747,7 @@ public static partial class OpenIddictServerHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -5779,7 +5778,7 @@ public static partial class OpenIddictServerHandlers
context.Response.ErrorDescription = context.ErrorDescription;
context.Response.ErrorUri = context.ErrorUri;
return default;
return ValueTask.CompletedTask;
}
}
@ -5815,7 +5814,7 @@ public static partial class OpenIddictServerHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -103,7 +103,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
context.BaseUri = CreateUri(UriHelper.BuildAbsolute(request.Scheme, host, request.PathBase));
context.RequestUri = CreateUri(UriHelper.BuildAbsolute(request.Scheme, host, request.PathBase, request.Path, request.QueryString));
return default;
return ValueTask.CompletedTask;
// Note: the BCL System.Uri class has strict rules (e.g it rejects specific characters and enforces a
// limit of 65519 characters for the complete URI representation). To ensure no exception is thrown if the
@ -150,10 +150,10 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
description: SR.FormatID2081(HeaderNames.Host),
uri: SR.FormatID8000(SR.ID2081));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -187,7 +187,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
// If a token was already resolved, don't overwrite it.
if (!string.IsNullOrEmpty(context.AccessToken))
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
@ -202,10 +202,10 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
{
context.AccessToken = header["Bearer ".Length..];
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -295,7 +295,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
// If a token was already resolved, don't overwrite it.
if (!string.IsNullOrEmpty(context.AccessToken))
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
@ -309,10 +309,10 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
{
context.AccessToken = token;
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -375,7 +375,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -413,7 +413,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
context.Response.Scope = properties.GetString(Properties.Scope);
}
return default;
return ValueTask.CompletedTask;
}
}
@ -463,7 +463,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
_ => 400
};
return default;
return ValueTask.CompletedTask;
}
}
@ -502,7 +502,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
response.Headers[HeaderNames.Pragma] = "no-cache";
response.Headers[HeaderNames.Expires] = "Thu, 01 Jan 1970 00:00:00 GMT";
return default;
return ValueTask.CompletedTask;
}
}
@ -545,7 +545,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
// Note: unlike the server stack, the validation stack doesn't expose any endpoint
@ -606,7 +606,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
response.Headers.Append(HeaderNames.WWWAuthenticate, builder.ToString());
return default;
return ValueTask.CompletedTask;
}
}
@ -643,13 +643,13 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
// If the response doesn't contain a WWW-Authenticate header, don't return an empty response.
if (!response.Headers.ContainsKey(HeaderNames.WWWAuthenticate))
{
return default;
return ValueTask.CompletedTask;
}
context.Logger.LogInformation(6141, SR.GetResourceString(SR.ID6141), context.Transaction.Response);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -10,7 +10,6 @@ using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using static OpenIddict.Validation.DataProtection.OpenIddictValidationDataProtectionConstants.Purposes;
using static OpenIddict.Validation.OpenIddictValidationHandlers.Protection;
using Schemes = OpenIddict.Validation.DataProtection.OpenIddictValidationDataProtectionConstants.Purposes.Schemes;
@ -55,13 +54,13 @@ public static partial class OpenIddictValidationDataProtectionHandlers
// If a principal was already attached, don't overwrite it.
if (context.Principal is not null)
{
return default;
return ValueTask.CompletedTask;
}
// If a specific token format is expected, return immediately if it doesn't match the expected value.
if (context.TokenFormat is not null and not TokenFormats.Private.DataProtection)
{
return default;
return ValueTask.CompletedTask;
}
// Note: ASP.NET Core Data Protection tokens created by the default implementation always start
@ -78,7 +77,7 @@ public static partial class OpenIddictValidationDataProtectionHandlers
"Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtectionProvider",
StringComparison.Ordinal))
{
return default;
return ValueTask.CompletedTask;
}
// Note: unlike the equivalent handler in the server stack, the logic used here is
@ -101,14 +100,14 @@ public static partial class OpenIddictValidationDataProtectionHandlers
description: SR.GetResourceString(SR.ID2004),
uri: SR.FormatID8000(SR.ID2004));
return default;
return ValueTask.CompletedTask;
}
context.Principal = principal;
context.Logger.LogTrace(6152, SR.GetResourceString(SR.ID6152), context.Token, context.Principal.Claims);
return default;
return ValueTask.CompletedTask;
ClaimsPrincipal? ValidateToken(string type)
{

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

@ -12,7 +12,6 @@ using System.Text;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
using Owin;
using static OpenIddict.Validation.Owin.OpenIddictValidationOwinConstants;
using Properties = OpenIddict.Validation.Owin.OpenIddictValidationOwinConstants.Properties;
@ -105,7 +104,7 @@ public static partial class OpenIddictValidationOwinHandlers
context.BaseUri = CreateUri(request.Scheme + Uri.SchemeDelimiter + host + request.PathBase);
context.RequestUri = CreateUri(request.Scheme + Uri.SchemeDelimiter + host + request.PathBase + request.Path + request.QueryString);
return default;
return ValueTask.CompletedTask;
// Note: the BCL System.Uri class has strict rules (e.g it rejects specific characters and enforces a
// limit of 65519 characters for the complete URI representation). To ensure no exception is thrown if the
@ -152,10 +151,10 @@ public static partial class OpenIddictValidationOwinHandlers
description: SR.FormatID2081(Headers.Host),
uri: SR.FormatID8000(SR.ID2081));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -189,7 +188,7 @@ public static partial class OpenIddictValidationOwinHandlers
// If a token was already resolved, don't overwrite it.
if (!string.IsNullOrEmpty(context.AccessToken))
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
@ -204,10 +203,10 @@ public static partial class OpenIddictValidationOwinHandlers
{
context.AccessToken = header["Bearer ".Length..];
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -298,7 +297,7 @@ public static partial class OpenIddictValidationOwinHandlers
// If a token was already resolved, don't overwrite it.
if (!string.IsNullOrEmpty(context.AccessToken))
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
@ -313,10 +312,10 @@ public static partial class OpenIddictValidationOwinHandlers
{
context.AccessToken = token;
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -349,7 +348,7 @@ public static partial class OpenIddictValidationOwinHandlers
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
if (properties is not { Dictionary.Count: > 0 })
{
return default;
return ValueTask.CompletedTask;
}
// Note: unlike ASP.NET Core, OWIN's AuthenticationProperties doesn't offer a strongly-typed
@ -395,7 +394,7 @@ public static partial class OpenIddictValidationOwinHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -433,7 +432,7 @@ public static partial class OpenIddictValidationOwinHandlers
context.Response.Scope = GetProperty(properties, Properties.Scope);
}
return default;
return ValueTask.CompletedTask;
static string? GetProperty(AuthenticationProperties properties, string name)
=> properties.Dictionary.TryGetValue(name, out string? value) ? value : null;
@ -486,7 +485,7 @@ public static partial class OpenIddictValidationOwinHandlers
_ => 400
};
return default;
return ValueTask.CompletedTask;
}
}
@ -539,7 +538,7 @@ public static partial class OpenIddictValidationOwinHandlers
properties : response.Context.Authentication.AuthenticationResponseChallenge?.Properties ?? new());
}
return default;
return ValueTask.CompletedTask;
}
}
@ -584,7 +583,7 @@ public static partial class OpenIddictValidationOwinHandlers
TrySuppressFormsAuthenticationRedirect(response.Environment);
}
return default;
return ValueTask.CompletedTask;
static void TrySuppressFormsAuthenticationRedirect(IDictionary<string, object> environment)
{
@ -645,7 +644,7 @@ public static partial class OpenIddictValidationOwinHandlers
response.Headers[Headers.Pragma] = "no-cache";
response.Headers[Headers.Expires] = "Thu, 01 Jan 1970 00:00:00 GMT";
return default;
return ValueTask.CompletedTask;
}
}
@ -688,7 +687,7 @@ public static partial class OpenIddictValidationOwinHandlers
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
return default;
return ValueTask.CompletedTask;
}
// Note: unlike the server stack, the validation stack doesn't expose any endpoint
@ -749,7 +748,7 @@ public static partial class OpenIddictValidationOwinHandlers
response.Headers.Append(Headers.WwwAuthenticate, builder.ToString());
return default;
return ValueTask.CompletedTask;
}
}
@ -786,13 +785,13 @@ public static partial class OpenIddictValidationOwinHandlers
// If the response doesn't contain a WWW-Authenticate header, don't return an empty response.
if (!response.Headers.ContainsKey(Headers.WwwAuthenticate))
{
return default;
return ValueTask.CompletedTask;
}
context.Logger.LogInformation(6141, SR.GetResourceString(SR.ID6141), context.Transaction.Response);
context.HandleRequest();
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -16,7 +16,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using static OpenIddict.Validation.SystemNetHttp.OpenIddictValidationSystemNetHttpConstants;
namespace OpenIddict.Validation.SystemNetHttp;
@ -68,7 +67,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
// If an explicit client authentication method was attached, don't overwrite it.
if (!string.IsNullOrEmpty(context.IntrospectionEndpointClientAuthenticationMethod))
{
return default;
return ValueTask.CompletedTask;
}
context.IntrospectionEndpointClientAuthenticationMethod = (
@ -147,7 +146,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
_ => null
};
return default;
return ValueTask.CompletedTask;
}
}
@ -217,7 +216,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
context.Transaction.SetProperty(typeof(HttpClient).FullName!, _factory.CreateClient(builder.ToString()) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID0174)));
return default;
return ValueTask.CompletedTask;
}
}
@ -249,7 +248,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
context.Transaction.SetProperty(typeof(HttpRequestMessage).FullName!,
new HttpRequestMessage(HttpMethod.Get, context.RemoteUri));
return default;
return ValueTask.CompletedTask;
}
}
@ -281,7 +280,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
context.Transaction.SetProperty(typeof(HttpRequestMessage).FullName!,
new HttpRequestMessage(HttpMethod.Post, context.RemoteUri));
return default;
return ValueTask.CompletedTask;
}
}
@ -328,7 +327,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
request.VersionPolicy = client.DefaultVersionPolicy;
#endif
#endif
return default;
return ValueTask.CompletedTask;
}
}
@ -369,7 +368,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
// that require using HTTP compression can register a custom event handler to send an
// Accept-Encoding header containing the supported algorithms (e.g GZip/Deflate/Brotli).
return default;
return ValueTask.CompletedTask;
}
}
@ -425,7 +424,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
productName: assembly.Name!,
productVersion: assembly.Version!.ToString()));
return default;
return ValueTask.CompletedTask;
}
}
@ -466,7 +465,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
// Attach the contact address specified in the options, if available.
request.Headers.From = _options.CurrentValue.ContactAddress?.ToString();
return default;
return ValueTask.CompletedTask;
}
}
@ -520,7 +519,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
context.Transaction.Request.ClientId = context.Transaction.Request.ClientSecret = null;
}
return default;
return ValueTask.CompletedTask;
static string? EscapeDataString(string? value)
=> value is not null ? Uri.EscapeDataString(value).Replace("%20", "+") : null;
@ -560,7 +559,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
if (context.Transaction.Request.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// For GET requests, attach the request parameters to the query string by default.
@ -583,7 +582,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
select new KeyValuePair<string?, string?>(parameter.Key, value));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -685,7 +684,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
// Remove the request from the transaction properties.
context.Transaction.SetProperty<HttpRequestMessage>(typeof(HttpRequestMessage).FullName!, null);
return default;
return ValueTask.CompletedTask;
}
}
@ -941,7 +940,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
// Don't overwrite the response if one was already provided.
if (context.Transaction.Response is not null)
{
return default;
return ValueTask.CompletedTask;
}
// This handler only applies to System.Net.Http requests. If the HTTP response cannot be resolved,
@ -951,14 +950,14 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
if (response.Headers.WwwAuthenticate.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
context.Transaction.Response = new OpenIddictResponse(response.Headers.WwwAuthenticate
.Where(static header => !string.IsNullOrEmpty(header.Parameter))
.SelectMany(static header => ParseParameters(header.Parameter!)));
return default;
return ValueTask.CompletedTask;
static IEnumerable<KeyValuePair<string, string?>> ParseParameters(string parameter)
{
@ -1147,7 +1146,7 @@ public static partial class OpenIddictValidationSystemNetHttpHandlers
// Remove the response from the transaction properties.
context.Transaction.SetProperty<HttpResponseMessage>(typeof(HttpResponseMessage).FullName!, null);
return default;
return ValueTask.CompletedTask;
}
}
}

1
src/OpenIddict.Validation/OpenIddictValidationBuilder.cs

@ -12,7 +12,6 @@ using System.Security.Claims;
using System.Security.Cryptography.X509Certificates;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
using OpenIddict.Validation;
namespace Microsoft.Extensions.DependencyInjection;

1
src/OpenIddict.Validation/OpenIddictValidationConfiguration.cs

@ -8,7 +8,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Protocols;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Validation;

1
src/OpenIddict.Validation/OpenIddictValidationDispatcher.cs

@ -7,7 +7,6 @@
using System.ComponentModel;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OpenIddict.Extensions;
namespace OpenIddict.Validation;

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

@ -8,7 +8,6 @@ using System.Collections.Immutable;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Validation;
@ -69,11 +68,11 @@ public static partial class OpenIddictValidationHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -147,10 +146,10 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2144),
uri: SR.FormatID8000(SR.ID2144));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -188,7 +187,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2096),
uri: SR.FormatID8000(SR.ID2096));
return default;
return ValueTask.CompletedTask;
}
if (!Uri.TryCreate(issuer, UriKind.Absolute, out Uri? uri))
@ -198,7 +197,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2097),
uri: SR.FormatID8000(SR.ID2097));
return default;
return ValueTask.CompletedTask;
}
// Ensure the issuer matches the expected value.
@ -209,12 +208,12 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2098),
uri: SR.FormatID8000(SR.ID2098));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.Issuer = uri;
return default;
return ValueTask.CompletedTask;
}
}
@ -251,7 +250,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2099),
uri: SR.FormatID8000(SR.ID2099));
return default;
return ValueTask.CompletedTask;
}
if (!Uri.TryCreate(endpoint, UriKind.Absolute, out Uri? uri) || OpenIddictHelpers.IsImplicitFileUri(uri))
@ -261,12 +260,12 @@ public static partial class OpenIddictValidationHandlers
description: SR.FormatID2100(Metadata.JwksUri),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.JsonWebKeySetUri = uri;
return default;
return ValueTask.CompletedTask;
}
}
@ -303,13 +302,13 @@ public static partial class OpenIddictValidationHandlers
description: SR.FormatID2100(Metadata.IntrospectionEndpoint),
uri: SR.FormatID8000(SR.ID2100));
return default;
return ValueTask.CompletedTask;
}
context.Configuration.IntrospectionEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -345,7 +344,7 @@ public static partial class OpenIddictValidationHandlers
context.Configuration.MtlsIntrospectionEndpoint = uri;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -382,7 +381,7 @@ public static partial class OpenIddictValidationHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -418,11 +417,11 @@ public static partial class OpenIddictValidationHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -484,10 +483,10 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2145),
uri: SR.FormatID8000(SR.ID2145));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -522,7 +521,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.FormatID2102(JsonWebKeySetParameterNames.Keys),
uri: SR.FormatID8000(SR.ID2102));
return default;
return ValueTask.CompletedTask;
}
for (var index = 0; index < keys.Count; index++)
@ -573,7 +572,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2103),
uri: SR.FormatID8000(SR.ID2103));
return default;
return ValueTask.CompletedTask;
}
// If the key is a RSA key, ensure the mandatory parameters are all present.
@ -585,7 +584,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2104),
uri: SR.FormatID8000(SR.ID2104));
return default;
return ValueTask.CompletedTask;
}
// If the key is an EC key, ensure the mandatory parameters are all present.
@ -597,7 +596,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2104),
uri: SR.FormatID8000(SR.ID2104));
return default;
return ValueTask.CompletedTask;
}
key.KeyId = (string?) keys[index][JsonWebKeyParameterNames.Kid];
@ -620,7 +619,7 @@ public static partial class OpenIddictValidationHandlers
context.SecurityKeys.Keys.Add(key);
}
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -10,7 +10,6 @@ using System.Globalization;
using System.Security.Claims;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using OpenIddict.Extensions;
namespace OpenIddict.Validation;
@ -65,11 +64,11 @@ public static partial class OpenIddictValidationHandlers
description: SR.FormatID2107(parameter.Key),
uri: SR.FormatID8000(SR.ID2107));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
// Note: in the typical case, the response parameters should be deserialized from a
// JSON response and thus natively stored as System.Text.Json.JsonElement instances.
@ -149,10 +148,10 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2146),
uri: SR.FormatID8000(SR.ID2146));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -192,7 +191,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.FormatID2105(Parameters.Active),
uri: SR.FormatID8000(SR.ID2105));
return default;
return ValueTask.CompletedTask;
}
if (active is not true)
@ -202,10 +201,10 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2106),
uri: SR.FormatID8000(SR.ID2106));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -244,7 +243,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2108),
uri: SR.FormatID8000(SR.ID2108));
return default;
return ValueTask.CompletedTask;
}
// Ensure the issuer matches the expected value.
@ -255,11 +254,11 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2109),
uri: SR.FormatID8000(SR.ID2109));
return default;
return ValueTask.CompletedTask;
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -303,10 +302,10 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2176),
uri: SR.FormatID8000(SR.ID2176));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -341,7 +340,7 @@ public static partial class OpenIddictValidationHandlers
// whether the returned token has an acceptable type depending on the context.
switch ((string?) context.Response[Claims.TokenUsage])
{
case null or { Length: 0 }: return default;
case null or { Length: 0 }: return ValueTask.CompletedTask;
// Note: by default, OpenIddict only allows access/refresh tokens to be
// introspected but additional types can be added using the events model.
@ -359,10 +358,10 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2118),
uri: SR.FormatID8000(SR.ID2118));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -445,7 +444,7 @@ public static partial class OpenIddictValidationHandlers
context.Principal = new ClaimsPrincipal(identity);
return default;
return ValueTask.CompletedTask;
}
}
@ -511,7 +510,7 @@ public static partial class OpenIddictValidationHandlers
_ => []
});
return default;
return ValueTask.CompletedTask;
}
}
}

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

@ -10,7 +10,6 @@ using System.Globalization;
using System.Security.Claims;
using Microsoft.Extensions.Logging;
using Microsoft.IdentityModel.Tokens;
using OpenIddict.Extensions;
namespace OpenIddict.Validation;
@ -133,7 +132,7 @@ public static partial class OpenIddictValidationHandlers
context.SecurityTokenHandler = context.Options.JsonWebTokenHandler;
context.TokenValidationParameters = parameters;
return default;
return ValueTask.CompletedTask;
}
}
@ -163,7 +162,7 @@ public static partial class OpenIddictValidationHandlers
// If no character was explicitly added, all characters are considered valid.
if (context.AllowedCharset.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// Remove the disallowed characters from the token string. If the token is
@ -176,12 +175,12 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2004),
uri: SR.FormatID8000(SR.ID2004));
return default;
return ValueTask.CompletedTask;
}
context.Token = token;
return default;
return ValueTask.CompletedTask;
}
}
@ -403,7 +402,7 @@ public static partial class OpenIddictValidationHandlers
if (context.Principal is null)
{
return default;
return ValueTask.CompletedTask;
}
// Note: in previous OpenIddict versions, scopes were represented as a JSON array
@ -419,7 +418,7 @@ public static partial class OpenIddictValidationHandlers
context.Principal.SetClaim(Claims.Scope, string.Join(" ", scopes));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -448,7 +447,7 @@ public static partial class OpenIddictValidationHandlers
if (context.Principal is null)
{
return default;
return ValueTask.CompletedTask;
}
// To reduce the size of tokens, some of the private claims used by OpenIddict
@ -522,7 +521,7 @@ public static partial class OpenIddictValidationHandlers
}
}
return default;
return ValueTask.CompletedTask;
}
}
@ -625,7 +624,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2004),
uri: SR.FormatID8000(SR.ID2004));
return default;
return ValueTask.CompletedTask;
}
// When using JWT or Data Protection tokens, the correct token type is always enforced by IdentityModel
@ -643,7 +642,7 @@ public static partial class OpenIddictValidationHandlers
throw new InvalidOperationException(SR.FormatID0005(type, string.Join(", ", context.ValidTokenTypes)));
}
return default;
return ValueTask.CompletedTask;
}
}
@ -683,10 +682,10 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2019),
uri: SR.FormatID8000(SR.ID2019));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -719,7 +718,7 @@ public static partial class OpenIddictValidationHandlers
// If no specific value is expected, skip the default presenter validation.
if (context.ValidPresenters.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't have any presenter attached, return an error.
@ -733,7 +732,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2184),
uri: SR.FormatID8000(SR.ID2184));
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't include any registered presenter, return an error.
@ -746,10 +745,10 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2185),
uri: SR.FormatID8000(SR.ID2185));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -782,7 +781,7 @@ public static partial class OpenIddictValidationHandlers
// If no specific value is expected, skip the default audience validation.
if (context.ValidAudiences.Count is 0)
{
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't have any audience attached, return an error.
@ -796,7 +795,7 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2093),
uri: SR.FormatID8000(SR.ID2093));
return default;
return ValueTask.CompletedTask;
}
// If the token doesn't include any registered audience, return an error.
@ -809,10 +808,10 @@ public static partial class OpenIddictValidationHandlers
description: SR.GetResourceString(SR.ID2094),
uri: SR.FormatID8000(SR.ID2094));
return default;
return ValueTask.CompletedTask;
}
return default;
return ValueTask.CompletedTask;
}
}
@ -946,7 +945,7 @@ public static partial class OpenIddictValidationHandlers
context.SecurityTokenDescriptor.SigningCredentials = context.Options.SigningCredentials.First();
context.SecurityTokenHandler = context.Options.JsonWebTokenHandler;
return default;
return ValueTask.CompletedTask;
}
}
@ -993,7 +992,7 @@ public static partial class OpenIddictValidationHandlers
context.SecurityTokenDescriptor.Subject = (ClaimsIdentity) principal.Identity;
return default;
return ValueTask.CompletedTask;
}
}
@ -1056,7 +1055,7 @@ public static partial class OpenIddictValidationHandlers
string value => value
};
return default;
return ValueTask.CompletedTask;
}
}
@ -1087,7 +1086,7 @@ public static partial class OpenIddictValidationHandlers
// If a token was already attached by another handler, don't overwrite it.
if (!string.IsNullOrEmpty(context.Token))
{
return default;
return ValueTask.CompletedTask;
}
context.Token = context.SecurityTokenHandler.CreateToken(context.SecurityTokenDescriptor);
@ -1095,7 +1094,7 @@ public static partial class OpenIddictValidationHandlers
context.Logger.LogTrace(6013, SR.GetResourceString(SR.ID6013), context.TokenType,
context.Token, context.SecurityTokenDescriptor.Subject?.Claims ?? []);
return default;
return ValueTask.CompletedTask;
}
}
}

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

Loading…
Cancel
Save