Manuellement la validation d'un JWT jeton en C#
Je vais avoir quelques problèmes manuellement la validation un JWT jeton émis par le Serveur de l'Identité 4. À l'aide de la
ClientId: "CLIENT1"
ClientSecret: "123456"
L'exception que je reçois est: IDX10501: Signature de la validation a échoué. Impossible de faire correspondre les touches: '[PII est masqué par défaut. Définir la "ShowPII de" drapeau dans IdentityModelEventSource.cs à true pour le révéler.]'
Quelqu'un est-il en mesure de me conseiller où je vais mal.
private static void ValidateJwt(string jwt, DiscoveryResponse disco)
{
var parameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
ValidIssuer = disco.Issuer,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("123456")),
ValidAudience = "CLIENT1",
//IssuerSigningKeys = keys,
//ValidateAudience = true,
//ValidateLifetime = true,
};
SecurityToken validatedToken;
var handler = new JwtSecurityTokenHandler();
handler.InboundClaimTypeMap.Clear();
try
{
var user = handler.ValidateToken(jwt, parameters, out validatedToken);
}
catch(Exception ex)
{
var error = ex.Message;
}
}
Encoding.UTF8.GetBytes(
peut pas être la bonne façon de le faire.
Vous devez vous connecter pour publier un commentaire.
Découvrez
ValidateJwt()
dans cet exemple:https://github.com/IdentityServer/IdentityServer4.Samples/blob/master/Clients/src/MvcManual/Controllers/HomeController.cs
Le bit vous êtes absent est le chargement de la clé publique à partir de la découverte du document.
Essayez de changer la longueur de votre clé privée. Votre clé privée est trop petite pour être codé, je suppose.
IdentityServer signes de la JWT à l'aide de RS256. Cela signifie que vous devez utiliser une clé publique pour vérifier la JWT (vous pouvez obtenir ce à partir de la découverte du document).
Le client id & secrets du client le client dans les informations d'identification utilisées pour demander des jetons. Ils n'ont aucune part à leur validation.
Que vous essayez d'utiliser SymmetricKey pour JWT de validation. Essayez de regarder votre jeton dans JWT.io et si l'algorithme est"RS256" puis SymmetricKey ne fonctionne pas.
Vous avez spécifié:
mais la
JwtSecurityTokenHandler
ne pouvait pas le faire correspondre avec la clé qui peut être une partie de jwt-tête lui-même. Fondamentalement, cela signifie que votre configuration a incompatibilité[es] avec la configuration du réel de l'émetteur. L'erreur indique que cela concerne les clés de signature.S'il vous plaît, vérifiez la configuration de l'émetteur (si vous pouvez), trouver manqué de pièces, et essayez à nouveau.
Vous pouvez utiliser jwt.io pour déboguer votre jwt en ligne.