Skip to content

Commit 5b02884

Browse files
committed
Fix filtering JWT validation values
1 parent 0a7997d commit 5b02884

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

src/IdentityServer4/src/Validation/Default/JwtRequestValidator.cs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using IdentityServer4.Configuration;
1212
using IdentityServer4.Extensions;
1313
using IdentityServer4.Models;
14+
using Microsoft.AspNetCore.DataProtection.KeyManagement;
1415
using Microsoft.AspNetCore.Http;
1516
using Microsoft.Extensions.Logging;
1617
using Microsoft.IdentityModel.Tokens;
@@ -26,7 +27,7 @@ public class JwtRequestValidator
2627
{
2728
private readonly string _audienceUri;
2829
private readonly IHttpContextAccessor _httpContextAccessor;
29-
30+
3031
/// <summary>
3132
/// JWT handler
3233
/// </summary>
@@ -55,7 +56,7 @@ protected string AudienceUri
5556
/// The logger
5657
/// </summary>
5758
protected readonly ILogger Logger;
58-
59+
5960
/// <summary>
6061
/// The optione
6162
/// </summary>
@@ -67,7 +68,7 @@ protected string AudienceUri
6768
public JwtRequestValidator(IHttpContextAccessor contextAccessor, IdentityServerOptions options, ILogger<JwtRequestValidator> logger)
6869
{
6970
_httpContextAccessor = contextAccessor;
70-
71+
7172
Options = options;
7273
Logger = logger;
7374
}
@@ -181,8 +182,8 @@ protected virtual Task<JwtSecurityToken> ValidateJwtAsync(string jwtTokenString,
181182
}
182183

183184
Handler.ValidateToken(jwtTokenString, tokenValidationParameters, out var token);
184-
185-
return Task.FromResult((JwtSecurityToken)token);
185+
186+
return Task.FromResult((JwtSecurityToken) token);
186187
}
187188

188189
/// <summary>
@@ -200,17 +201,18 @@ protected virtual Task<Dictionary<string, string>> ProcessPayloadAsync(JwtSecuri
200201
{
201202
var value = token.Payload[key];
202203

203-
switch (value)
204+
if (value is string)
205+
{
206+
payload.Add(key, value.ToString());
207+
}
208+
else
204209
{
205-
case string s:
206-
payload.Add(key, s);
207-
break;
208-
case JObject jobj:
209-
payload.Add(key, jobj.ToString(Formatting.None));
210-
break;
211-
case JArray jarr:
212-
payload.Add(key, jarr.ToString(Formatting.None));
213-
break;
210+
var valueType = value.GetType();
211+
if (valueType.Name == "JObject" || // Microsoft.IdentityModel.Json.Linq.JObject
212+
valueType.Name == "JArray") // Microsoft.IdentityModel.Json.Linq.JArray
213+
{
214+
payload.Add(key, value.ToString());
215+
}
214216
}
215217
}
216218
}

0 commit comments

Comments
 (0)