per*_*zzo 3 c# token xamarin.android jwt
在令牌验证中,我检查了令牌的生命周期,它是13:07:10。当我运行验证时,时间是13:12,验证成功。为什么?
大约13:15时,我再次运行验证,正如预期的那样,它抛出了异常。
令牌是否有最短过期时间?
创建令牌:
var token = new JwtSecurityToken(
issuer: token_issuer,
audience: token_audience,
claims: claims,
expires: DateTime.Now.AddSeconds(5),
signingCredentials: creds
);
Run Code Online (Sandbox Code Playgroud)
验证令牌:
private static bool ValidateToken(string token)
{
try
{
TokenValidationParameters validationParameters = new TokenValidationParameters
{
IssuerSigningKey = new SymmetricSecurityKey(token_salt),
ValidAudience = token_audience,
ValidIssuer = token_issuer,
RequireExpirationTime = true
};
ClaimsPrincipal principal = new JwtSecurityTokenHandler().ValidateToken(token_last, validationParameters, out SecurityToken validatedToken);
return true;
}
catch(SecurityTokenExpiredException ex)
{
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
小智 7
这是由于ClockSkew令牌验证参数,它允许提供一个缓冲区来解决发布 JWT 的服务器和验证 JWT 的服务器之间的时钟差异。
在 .NET Core / 5+ 中,您可以TokenValidationParameters在 Startup 中的 JwtBearer 配置中的对象中更改其值,如下所示。其默认值为 300 秒,即 5 分钟。
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "https://some-jwt-token-issuer.com";
options.TokenValidationParameters = new TokenValidationParameters()
{
// Set the below to eliminate the skew
ClockSkew = TimeSpan.Zero
};
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3539 次 |
| 最近记录: |