Browse Source

Update the client service to attach the additional parameters to the correct request instances

pull/1923/head
Kévin Chalet 3 years ago
parent
commit
7585ebfbed
  1. 10
      src/OpenIddict.Client/OpenIddictClientModels.cs
  2. 16
      src/OpenIddict.Client/OpenIddictClientService.cs

10
src/OpenIddict.Client/OpenIddictClientModels.cs

@ -19,11 +19,6 @@ public static class OpenIddictClientModels
/// </summary> /// </summary>
public sealed record class InteractiveAuthenticationRequest public sealed record class InteractiveAuthenticationRequest
{ {
/// <summary>
/// Gets or sets the parameters that will be added to the token request.
/// </summary>
public Dictionary<string, OpenIddictParameter>? AdditionalTokenRequestParameters { get; init; }
/// <summary> /// <summary>
/// Gets or sets the cancellation token that will be /// Gets or sets the cancellation token that will be
/// used to determine if the operation was aborted. /// used to determine if the operation was aborted.
@ -39,11 +34,6 @@ public static class OpenIddictClientModels
/// Gets or sets the application-specific properties that will be added to the context. /// Gets or sets the application-specific properties that will be added to the context.
/// </summary> /// </summary>
public Dictionary<string, string?>? Properties { get; init; } public Dictionary<string, string?>? Properties { get; init; }
/// <summary>
/// Gets the scopes that will be sent to the authorization server.
/// </summary>
public List<string>? Scopes { get; init; }
} }
/// <summary> /// <summary>

16
src/OpenIddict.Client/OpenIddictClientService.cs

@ -247,6 +247,14 @@ public sealed class OpenIddictClientService
Nonce = request.Nonce Nonce = request.Nonce
}; };
if (request.Properties is { Count: > 0 })
{
foreach (var property in request.Properties)
{
context.Properties[property.Key] = property.Value;
}
}
await dispatcher.DispatchAsync(context); await dispatcher.DispatchAsync(context);
if (context.IsRejected) if (context.IsRejected)
@ -521,7 +529,7 @@ public sealed class OpenIddictClientService
Issuer = request.Issuer, Issuer = request.Issuer,
ProviderName = request.ProviderName, ProviderName = request.ProviderName,
RegistrationId = request.RegistrationId, RegistrationId = request.RegistrationId,
Request = request.AdditionalTokenRequestParameters TokenRequest = request.AdditionalTokenRequestParameters
is Dictionary<string, OpenIddictParameter> parameters ? new(parameters) : new(), is Dictionary<string, OpenIddictParameter> parameters ? new(parameters) : new(),
}; };
@ -630,13 +638,13 @@ public sealed class OpenIddictClientService
var context = new ProcessChallengeContext(transaction) var context = new ProcessChallengeContext(transaction)
{ {
CancellationToken = request.CancellationToken, CancellationToken = request.CancellationToken,
DeviceAuthorizationRequest = request.AdditionalDeviceAuthorizationRequestParameters
is Dictionary<string, OpenIddictParameter> parameters ? new(parameters) : new(),
GrantType = GrantTypes.DeviceCode, GrantType = GrantTypes.DeviceCode,
Issuer = request.Issuer, Issuer = request.Issuer,
Principal = new ClaimsPrincipal(new ClaimsIdentity()), Principal = new ClaimsPrincipal(new ClaimsIdentity()),
ProviderName = request.ProviderName, ProviderName = request.ProviderName,
RegistrationId = request.RegistrationId, RegistrationId = request.RegistrationId
Request = request.AdditionalDeviceAuthorizationRequestParameters
is Dictionary<string, OpenIddictParameter> parameters ? new(parameters) : new(),
}; };
if (request.Scopes is { Count: > 0 }) if (request.Scopes is { Count: > 0 })

Loading…
Cancel
Save