Browse Source

Support additional integer claim value types

pull/1425/head
Kévin Chalet 4 years ago
parent
commit
68bd5d5e34
  1. 18
      src/OpenIddict.Client/OpenIddictClientHandlers.Userinfo.cs
  2. 18
      src/OpenIddict.Validation/OpenIddictValidationHandlers.Introspection.cs

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

@ -173,7 +173,7 @@ public static partial class OpenIddictClientHandlers
identity.AddClaim(new Claim(
type : parameter.Key,
value : item.ToString()!,
valueType : GetClaimValueType(item.ValueKind),
valueType : GetClaimValueType(item),
issuer : issuer,
originalIssuer: issuer,
subject : identity));
@ -186,7 +186,7 @@ public static partial class OpenIddictClientHandlers
identity.AddClaim(new Claim(
type : parameter.Key,
value : value.ToString()!,
valueType : GetClaimValueType(value.ValueKind),
valueType : GetClaimValueType(value),
issuer : issuer,
originalIssuer: issuer,
subject : identity));
@ -196,11 +196,17 @@ public static partial class OpenIddictClientHandlers
context.Principal = new ClaimsPrincipal(identity);
static string GetClaimValueType(JsonValueKind kind) => kind switch
static string GetClaimValueType(JsonElement element) => element.ValueKind switch
{
JsonValueKind.String => ClaimValueTypes.String,
JsonValueKind.Number => ClaimValueTypes.Integer64,
JsonValueKind.True or JsonValueKind.False => ClaimValueTypes.Boolean,
JsonValueKind.String => ClaimValueTypes.String,
JsonValueKind.True or JsonValueKind.False => ClaimValueTypes.Boolean,
JsonValueKind.Number when element.TryGetInt32(out _) => ClaimValueTypes.Integer32,
JsonValueKind.Number when element.TryGetInt64(out _) => ClaimValueTypes.Integer64,
JsonValueKind.Number when element.TryGetUInt32(out _) => ClaimValueTypes.UInteger32,
JsonValueKind.Number when element.TryGetUInt64(out _) => ClaimValueTypes.UInteger64,
JsonValueKind.Number when element.TryGetDouble(out _) => ClaimValueTypes.Double,
JsonValueKind.Null or JsonValueKind.Undefined => JsonClaimValueTypes.JsonNull,
JsonValueKind.Array => JsonClaimValueTypes.JsonArray,
JsonValueKind.Object or _ => JsonClaimValueTypes.Json

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

@ -425,7 +425,7 @@ public static partial class OpenIddictValidationHandlers
identity.AddClaim(new Claim(
type : parameter.Key,
value : item.ToString()!,
valueType : GetClaimValueType(item.ValueKind),
valueType : GetClaimValueType(item),
issuer : issuer,
originalIssuer: issuer,
subject : identity));
@ -438,7 +438,7 @@ public static partial class OpenIddictValidationHandlers
identity.AddClaim(new Claim(
type : parameter.Key,
value : value.ToString()!,
valueType : GetClaimValueType(value.ValueKind),
valueType : GetClaimValueType(value),
issuer : issuer,
originalIssuer: issuer,
subject : identity));
@ -448,11 +448,17 @@ public static partial class OpenIddictValidationHandlers
context.Principal = new ClaimsPrincipal(identity);
static string GetClaimValueType(JsonValueKind kind) => kind switch
static string GetClaimValueType(JsonElement element) => element.ValueKind switch
{
JsonValueKind.String => ClaimValueTypes.String,
JsonValueKind.Number => ClaimValueTypes.Integer64,
JsonValueKind.True or JsonValueKind.False => ClaimValueTypes.Boolean,
JsonValueKind.String => ClaimValueTypes.String,
JsonValueKind.True or JsonValueKind.False => ClaimValueTypes.Boolean,
JsonValueKind.Number when element.TryGetInt32(out _) => ClaimValueTypes.Integer32,
JsonValueKind.Number when element.TryGetInt64(out _) => ClaimValueTypes.Integer64,
JsonValueKind.Number when element.TryGetUInt32(out _) => ClaimValueTypes.UInteger32,
JsonValueKind.Number when element.TryGetUInt64(out _) => ClaimValueTypes.UInteger64,
JsonValueKind.Number when element.TryGetDouble(out _) => ClaimValueTypes.Double,
JsonValueKind.Null or JsonValueKind.Undefined => JsonClaimValueTypes.JsonNull,
JsonValueKind.Array => JsonClaimValueTypes.JsonArray,
JsonValueKind.Object or _ => JsonClaimValueTypes.Json

Loading…
Cancel
Save