[英]Azure Mobile Apps, Authorization works, but token expiration doesn't work
我正在使用自定义身份验证并生成 JWT 令牌。
当我发布到任何服务时,任何授权属性说[Authorize(Roles = "Admin")]
受到尊重,没有这个角色的用户收到授权错误(好!)。 这向我强调了令牌生成和回发的工作原理!
但是,当令牌过期时,什么也不会发生。 它被视为有效令牌,而我应该得到某种异常,我的代码是这样的:
app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions()
{
SigningKey = ConfigurationManager.AppSettings["authSigningKey"],
ValidAudiences = new[] { ConfigurationManager.AppSettings["authAudience"] },
ValidIssuers = new[] { ConfigurationManager.AppSettings["authIssuer"] },
TokenHandler = config.GetAppServiceTokenHandler()
});
和:
JwtSecurityToken token = AppServiceLoginHandler.CreateToken(
new Claim[] { new
Claim(JwtRegisteredClaimNames.Sub, assertion["username"]) },
mySigningKey,
myAppURL,
myAppURL,
// Setting very short time to test expiration
TimeSpan.FromSeconds(10));
我正在本地测试,我期待向客户端发送一个错误,说明令牌已过期。 我究竟做错了什么?
有 5 分钟的到期宽限期来解决时钟偏差。 我猜您是在 10 秒之后但在 5 分钟宽限期到期之前的某个时间发送此令牌。 尝试等待 5 分钟以上以确认令牌是否已过期。
当令牌过期时,不会直接发生任何事情。 当您第一次尝试使用该令牌时,对于使用[Authorize]
属性的任何端点,您都应该收到 401 Unauthorized 错误。 那是因为您提交的令牌不再有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.