以前はMicrosoft.IdentityModel.Tokens.JWT
への参照がありましたが、すべて正常に機能していました。
新しいSystem.IdentityModel.Tokens.Jwt
を使用するように更新しましたが、現在は何も機能していないようです。 ValidateToken
のJwtSecurityTokenHandler
メソッドとTokenValidationParameters
にはAllowedAudience
、SigningToken
、またはValidateExpiration
プロパティがありません。
ここに何が欠けていますか?誰でもこれでJWT検証の実用的なサンプルを提供できますか?
私の「古い」コード:
private static void ValidateJwt(string jwt)
{
var handler = new JWTSecurityTokenHandler();
var validationParameters = new Microsoft.IdentityModel.Tokens.JWT.TokenValidationParameters()
{
AllowedAudience = "https://my-rp.com",
//SigningToken = new BinarySecretSecurityToken(Convert.FromBase64String(myBase64Key)),
SigningToken = new X509SecurityToken(
X509
.LocalMachine
.My
.Thumbprint
.Find("UYTUYTVV99999999999YTYYTYTY88888888", false)
.First()),
ValidIssuer = "https://my-issuer.com/trust/issuer",
ValidateExpiration = true
};
try
{
var principal = handler.ValidateToken(jwt, validationParameters);
}
catch (Exception e)
{
Console.WriteLine("{0}\n {1}", e.Message, e.StackTrace);
}
Console.WriteLine();
}
多くの調査とテストの結果、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
名前空間。パッケージを追加することを忘れないでください Microsoft .Net Framework 4.5のJSON Web Token Handler "(これらの行を書いている時点でのバージョン4.0.0)。
一部のユーザーの検索に数時間かかることを願っています!