Zum Inhalt springen
ecdsa.com
Microsoft.IdentityModel.JsonWebTokens / System.IdentityModel.Tokens.Jwt (.NET).NET

Fehlermeldung

IDX10511: Signature validation failed. Keys tried:

Auch ausgegeben als

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

Der Rest der Meldung listet die probierten Schlüssel (verborgen als `[PII … is hidden]`, solange `ShowPII` nicht aktiv ist), Schlüsselanzahlen, die Herkunft des gefundenen Schlüssels und den `kid` auf.

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

Was der Fehler bedeutet

Anders als bei IDX10503 wurde ein Schlüssel mit dem `kid` des Tokens gefunden („Matched key was in 'TokenValidationParameters'“ oder „…'Configuration'“) – und trotzdem schlug die Signaturprüfung mit diesem Schlüssel fehl. Entweder teilen sich zwei verschiedene Schlüssel eine Schlüssel-ID, oder das Token wurde nach dem Signieren verändert. ASP.NET Core antwortet mit `error_description="The signature is invalid"`.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Thumbprint-basierte Schlüssel-IDs verwenden

    Ein aus dem Schlüsselmaterial berechneter `kid` (RFC 7638) kann nur kollidieren, wenn die Schlüssel identisch sind.

    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.

    Bytes des Secrets einheitlich festlegen

    Speichere das Shared Secret base64-kodiert und dekodiere es auf beiden Seiten auf dieselbe Weise.

    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);

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen