diff --git a/src/OpenIddict.Server/OpenIddictServerHandlers.Introspection.cs b/src/OpenIddict.Server/OpenIddictServerHandlers.Introspection.cs index ffb4042d..0eb3694b 100644 --- a/src/OpenIddict.Server/OpenIddictServerHandlers.Introspection.cs +++ b/src/OpenIddict.Server/OpenIddictServerHandlers.Introspection.cs @@ -700,6 +700,10 @@ namespace OpenIddict.Server var notification = new ProcessAuthenticationContext(context.Transaction); await _dispatcher.DispatchAsync(notification); + // Store the context object in the transaction so it can be later retrieved by handlers + // that want to access the authentication result without triggering a new authentication flow. + context.Transaction.SetProperty(typeof(ProcessAuthenticationContext).FullName!, notification); + if (notification.IsRequestHandled) { context.HandleRequest(); diff --git a/src/OpenIddict.Server/OpenIddictServerHandlers.Revocation.cs b/src/OpenIddict.Server/OpenIddictServerHandlers.Revocation.cs index 366b0ddb..6b5ef32e 100644 --- a/src/OpenIddict.Server/OpenIddictServerHandlers.Revocation.cs +++ b/src/OpenIddict.Server/OpenIddictServerHandlers.Revocation.cs @@ -643,6 +643,10 @@ namespace OpenIddict.Server var notification = new ProcessAuthenticationContext(context.Transaction); await _dispatcher.DispatchAsync(notification); + // Store the context object in the transaction so it can be later retrieved by handlers + // that want to access the authentication result without triggering a new authentication flow. + context.Transaction.SetProperty(typeof(ProcessAuthenticationContext).FullName!, notification); + if (notification.IsRequestHandled) { context.HandleRequest(); diff --git a/src/OpenIddict.Server/OpenIddictServerHandlers.Userinfo.cs b/src/OpenIddict.Server/OpenIddictServerHandlers.Userinfo.cs index e97b547f..793e0aa0 100644 --- a/src/OpenIddict.Server/OpenIddictServerHandlers.Userinfo.cs +++ b/src/OpenIddict.Server/OpenIddictServerHandlers.Userinfo.cs @@ -380,6 +380,10 @@ namespace OpenIddict.Server var notification = new ProcessAuthenticationContext(context.Transaction); await _dispatcher.DispatchAsync(notification); + // Store the context object in the transaction so it can be later retrieved by handlers + // that want to access the authentication result without triggering a new authentication flow. + context.Transaction.SetProperty(typeof(ProcessAuthenticationContext).FullName!, notification); + if (notification.IsRequestHandled) { context.HandleRequest();