安全技术研究如何防止JWT(。NET代码)
ASP。NETCore通过中间件microsoft。aspnetcore。authentication。jwtholder包原生提供JWT身份验证。
JWT承载身份验证可以在应用程序的启动中启用。通过使用UseJwtBearerAuthentication扩展方法或将方案设置为JwtBearerDefaults来配置方法或者使用services。AddAuthentication()的AuthenticationScheme。
身份验证选项TokenValidationParameters描述了如何验证JWT令牌。这个类支持大量的参数,但是下面的代码段是安全设置示例:vartokenValidationParametersnewTokenValidationParameters{RequireSignedTokenstrue,IssuerSigningKeynewSymmetricSecurityKey(key),ValidateIssuerfalse,ValidateLifetimetrue,ValidateAudiencefalse};RequireSignedTokens表示如果没有签名,SecurityToken是否可以被认为有效。设置为true则JWT令牌启用基本验证。IssuerSigningKey是用于验证传入JWT令牌的密钥。通过在这里指定一个密钥,令牌可以在没有发出服务器帮助的情况下进行验证。ValidateIssuer执行颁发者验证。validatlifetime强制生命期验证。ValidateAudience执行受众验证
至关重要的是,如果使用对称密钥作为IssuerSigningKey,它必须是具有足够复杂的强密码,以避免被试图伪造令牌的攻击者破解。