Я использую Auth0 и анализирую его idToken
на стороне сервера следующим образом:
var tokenHandler = new JwtSecurityTokenHandler();
var jwtToken = tokenHandler.ReadJwtToken(idToken); // idToken comes from client using auth0.js
var sub = jwtToken.Claims.First(claim => claim.Type == "sub").Value;
Приведенный выше код работает хорошо, и я могу успешно проанализировать idToken
, но я ' Я хотел бы проверить idToken
, прежде чем доверять ему, поэтому я попробовал это:
string clientSecret = "{client_secret}"; // comes from Auth0 application's client secret
var validations = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "some value", // used "iss" from here: https://jwt.io/
ValidAudience = "some value", // used "aud" from here: https://jwt.io/
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(clientSecret)),
};
var principal = tokenHandler.ValidateToken(idToken, validations, out var validatedToken);
При попытке проверить токен, это приводит к следующему исключению:
Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException
HResult=0x80131500
Message=IDX10501: Signature validation failed. Unable to match key:
kid: '[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'
Я взял значения эмитента и аудитории, проанализировав один из токенов: https://jwt.io/. Секрет клиента - это секрет клиента моего приложения в Auth0.
Как я могу проверить Auth0 idToken
, используя JwtSecurityTokenHandler
?