Aller au contenu
ecdsa.com
Microsoft.IdentityModel.JsonWebTokens / System.IdentityModel.Tokens.Jwt (.NET).NET

Message d’erreur

IDX10511: Signature validation failed. Keys tried:

Également affiché sous la forme

  • Bearer error="invalid_token", error_description="The signature is invalid"

Le reste du message liste les clés essayées (masquées sous la forme `[PII … is hidden]` sauf si `ShowPII` est activé), le nombre de clés, la provenance de la clé correspondante et le `kid`.

Microsoft.IdentityModel.JsonWebTokens / System.IdentityModel.Tokens.Jwt (.NET) — SecurityTokenInvalidSignatureException

Ce que cela signifie

Contrairement à IDX10503, une clé portant le `kid` du jeton a été trouvée (« Matched key was in 'TokenValidationParameters' » ou « …'Configuration' »), et la signature ne se vérifie pourtant pas avec elle. Soit deux clés différentes partagent un même identifiant de clé, soit le jeton a été modifié après la signature. ASP.NET Core répond par `error_description="The signature is invalid"`.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Utiliser des identifiants de clé fondés sur l’empreinte

    Un `kid` calculé à partir du matériel de clé (RFC 7638) ne peut entrer en collision que si les clés sont identiques.

    csharp
    // Derive kid from the key itself (RFC 7638 thumbprint) so different keys never share an ID.
    var jwk = JsonWebKeyConverter.ConvertFromECDsaSecurityKey(new ECDsaSecurityKey(ecdsa));
    var key = new ECDsaSecurityKey(ecdsa) { KeyId = Base64UrlEncoder.Encode(jwk.ComputeJwkThumbprint()) };
  2. 2.

    S’accorder sur les octets du secret

    Stockez le secret partagé encodé en base64 et décodez-le de la même manière des deux côtés.

    csharp
    // HS256: issuer and API must build the key from the same bytes.
    var secret = Convert.FromBase64String(builder.Configuration["Jwt:SecretBase64"]!); // >= 32 bytes
    var signingKey = new SymmetricSecurityKey(secret);

Erreurs associées

Parcourir toute la base de données des erreurs de signature