Ответ 1
После большого количества исследований и тестов я наконец обнаружил, что некоторые имена свойств для TokenValidationParameters
были изменены и подписи JwtSecurityTokenHandler.ValidateToken()
.
Итак, здесь изменена рабочая версия вышеуказанного кода.
private static void ValidateJwt(string jwt)
{
var handler = new JwtSecurityTokenHandler();
var validationParameters = new TokenValidationParameters()
{
ValidAudience = "https://my-rp.com",
IssuerSigningTokens = new List<X509SecurityToken>() { new X509SecurityToken(
X509
.LocalMachine
.My
.Thumbprint
.Find("UYTUYTVV99999999999YTYYTYTY88888888", false)
.First()) },
ValidIssuer = "https://my-issuer.com/trust/issuer",
CertificateValidator = X509CertificateValidator.None,
RequireExpirationTime = true
};
try
{
SecurityToken validatedToken;
var principal = handler.ValidateToken(jwt, validationParameters, out validatedToken);
}
catch (Exception e)
{
Console.WriteLine("{0}\n {1}", e.Message, e.StackTrace);
}
Console.WriteLine();
}
И для ссылки, JwtSecurityTokenHandler
живет в пространстве имен System.IdentityModel.Tokens
. Не забудьте добавить пакет " JSON Web Token Handler для Microsoft.Net Framework 4.5" (версия 4.0.0 в то время, когда я пишу тезисы).
Надеюсь, что это может спасти несколько часов поиска для некоторых из вас, ребята!