如何验证JWT令牌

27 浏览
0 Comments

如何验证JWT令牌

我正在尝试使用JWT令牌。我成功生成了一个有效的JWTTokenString并在JWT调试器上验证了它,但我无法在.NET中验证令牌。这是我目前的代码:

class Program {
    static string key = "401b09eab3c013d4ca54922bb802bec8fd5318192b0a75f201d8b3727429090fb337591abd3e44453b954555b7a0812e1081c39b740293f765eae731f5a65ed1";
    static void Main(string[] args) {
        var stringToken = GenerateToken();
        ValidateToken(stringToken);
    }
    private static string GenerateToken() {
        var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
        var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
        var header = new JwtHeader(credentials);
        var payload = new JwtPayload {
           { "some ", "hello "},
           { "scope", "world"},
        };
        var secToken = new JwtSecurityToken(header, payload);
        var handler = new JwtSecurityTokenHandler();
        return handler.WriteToken(secToken);
    }
    private static bool ValidateToken(string authToken) {
        var tokenHandler = new JwtSecurityTokenHandler();
        var validationParameters = GetValidationParameters();
        SecurityToken validatedToken;
        IPrincipal principal = tokenHandler.ValidateToken(authToken, validationParameters, out validatedToken);
        Thread.CurrentPrincipal = principal;
        return true;
    }
    private static TokenValidationParameters GetValidationParameters() {
        return new TokenValidationParameters() {
            //在这里不知道应该放什么
        };
    }
}

我只想要一个接收令牌并根据其有效性返回true或false的函数。从我所做的研究中,我看到人们使用IssuerSigningToken来分配验证密钥。但当我尝试使用时,它似乎不存在。有人可以帮我验证令牌吗?

0