我正在尝试创建一个令牌验证方法,如果JWT令牌基于签名有效,则返回true。 我不认为我真的需要验证令牌中的所有内容,但在调用ValidateToken()之后实际上表示令牌是否有效? 一个原则的存在? out引用的标记包含某些值? 不确定何时从此方法返回true。

public bool ValidateToken(string tokenString)
{
    var validationParameters = new TokenValidationParameters()
    {
        ValidIssuer = "My Company",
        ValidAudience = ApplicationId,
        IssuerSigningKey = JsonWebTokenSecretKey
    };

    SecurityToken token = new JwtSecurityToken();
    var tokenHandler = new JwtSecurityTokenHandler();
    var principal = tokenHandler.ValidateToken(tokenString, validationParameters, out token);

    return principal != null;
}

#1楼 票数:24 已采纳

我手动检查所有索赔值。 我一直在寻找对你的同一个问题的明确答案,但我唯一看到的是,如果出现问题,ValidateToken函数会抛出异常,所以我首先将调用包装在try-catch中并返回false捕获。

不过,这只是我在验证令牌时的“第一次通过”。 之后我做了一些更重的提升来手动检查某些值。 例如,我确保声明部分中的unique_name值实际上作为我的数据库中的用户存在,用户尚未停用,以及其他类似的专有系统。

    public static bool VerifyToken(string token)
    {
        var validationParameters = new TokenValidationParameters()
        {
            IssuerSigningToken = new BinarySecretSecurityToken(_key),
            ValidAudience = _audience,
            ValidIssuer = _issuer,
            ValidateLifetime = true,
            ValidateAudience = true,
            ValidateIssuer = true,
            ValidateIssuerSigningKey = true
        };

        var tokenHandler = new JwtSecurityTokenHandler();
        SecurityToken validatedToken = null;
        try
        {
            tokenHandler.ValidateToken(token, validationParameters, out validatedToken);
        }
        catch(SecurityTokenException)
        {
            return false; 
        }
        catch(Exception e)
        { 
            log(e.ToString()); //something else happened
            throw;
        }
        //... manual validations return false if anything untoward is discovered
        return validatedToken != null;
    }

最后一行, return validatedToken != null ,对我来说纯粹是迷信。 我从未见过validatedToken为null。

  ask by Adam translate from so

未解决问题?本站智能推荐:

1回复

“validatedToken”如何在“ValidateToken()”方法中工作?

我试图理解下面的代码块。 一切都很好,直到tokenHandler.ValidateToken(...)方法的第三个参数是out SecurityToken validatedToken 。 我检查了文档,但找不到关于最后一个论点的太多信息。 它是如何工作的? tokenHandler.Valid
1回复

JwtSecurityTokenHandler.ValidateToken抛出生命周期验证失败异常

我正在创建一个 ASP.net core 5 Web API。 在尝试获取刷新令牌时,会对当前令牌进行各种验证检查。 我最初的检查是使用 JwtSecurityTokenHandler.ValidateToken 和下面的代码。 var tokenInVerification = jwtTokenH
1回复

JOSEjwe/jws有效负载

使用JOSE时可以有任何一种有效载荷吗? 我正在考虑做类似的事情:{“ alg”:“ ES512”,“ cty”:“ XML”} 并从XML文件中提取一个字符串,然后在服务器端检查cty并创建XML。 我很确定这是有可能的,但是我没有看到任何示例,因此我开始思考也许这不是jose背后
1回复

有效载荷中的安全JWT

我正在开发一个REST API,我对通过JWT进行身份验证的正确方法有什么疑问,在令牌的有效负载中包含哪些信息以及哪些是最佳做法和最安全的: 安全包括mongoDB的有效负载令牌内的ObjectId吗? 如果用户导航到受保护的路线,则检查令牌中的“sub”,例如: 并在请求中进行比较
1回复

``无法在窗口上执行atob失败''不确定是在写入有效负载还是对其进行解码的功能

我一直在研究本教程https://thinkster.io/tutorials/mean-stack/creating-an-angular-service-for-authentication 。 我收到错误“无法在窗口上执行atob”。 我相当有把握地确定错误是在auth工厂内发生的,特
2回复

JwtSecurityTokenHandler线程是否安全

我正在使用JwtSecurityTokenHandler在aspnet核心web api应用程序中发出令牌: 每次请求和创建令牌时,都会实例化一个新的JwtSecurityTokenHandler,我可以使用它的全局实例并将其用于每个令牌生成吗? 这样使用有什么问题吗?
2回复

JwtSecurityTokenHandler4.0.0突破性变化?

这是Linqpad中JwtSecurityTokenHandler 4.0.0的简化测试。 该代码适用于JwtSecurityTokenHandler 3.0.2,生成并验证了令牌。 在4.0.0中,经过必要的更改后,我不断收到SecurityTokenSignatureKeyNotFoun
1回复

.NETCORE-JWTAuth-用户有效/有效吗?

我使用jwt-ken在我的应用程序上实现身份验证系统。 控制器: 而且工作正常! 但知道我想检查每个请求,如果用户仍然有效和/或活跃。 我不想添加策略,因为我想对每个请求进行此检查。 你有什么想法? 尝试1: # 但是我的ValidUserHandler从未调用过,响应