From 680d51d8f98b9e3512db62e2d6de6bcc9271897c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Chalet?= Date: Tue, 26 Sep 2023 16:27:57 +0200 Subject: [PATCH] Fix AuthenticateWithDeviceAsync() to flow the scopes attached to the request model --- src/OpenIddict.Client/OpenIddictClientHandlers.cs | 3 ++- src/OpenIddict.Client/OpenIddictClientService.cs | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/OpenIddict.Client/OpenIddictClientHandlers.cs b/src/OpenIddict.Client/OpenIddictClientHandlers.cs index 169aba2d..b692b351 100644 --- a/src/OpenIddict.Client/OpenIddictClientHandlers.cs +++ b/src/OpenIddict.Client/OpenIddictClientHandlers.cs @@ -2252,7 +2252,8 @@ public static partial class OpenIddictClientHandlers string type => type }; - if (context.Scopes.Count > 0) + if (context.Scopes.Count > 0 && + context.TokenRequest.GrantType is not (GrantTypes.AuthorizationCode or GrantTypes.DeviceCode)) { // Note: the final OAuth 2.0 specification requires using a space as the scope separator. // Clients that need to deal with older or non-compliant implementations can register diff --git a/src/OpenIddict.Client/OpenIddictClientService.cs b/src/OpenIddict.Client/OpenIddictClientService.cs index 6cded38e..6deb99ed 100644 --- a/src/OpenIddict.Client/OpenIddictClientService.cs +++ b/src/OpenIddict.Client/OpenIddictClientService.cs @@ -734,6 +734,11 @@ public sealed class OpenIddictClientService is Dictionary parameters ? new(parameters) : new(), }; + if (request.Scopes is { Count: > 0 }) + { + context.Scopes.UnionWith(request.Scopes); + } + if (request.Properties is { Count: > 0 }) { foreach (var property in request.Properties)