繁体   English   中英

Azure 移动应用,授权有效,但令牌过期无效

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM