【问题标题】:Azure Mobile Apps, Authorization works, but token expiration doesn't workAzure 移动应用,授权有效,但令牌过期无效
【发布时间】:2017-01-30 06:31:51
【问题描述】:

我正在使用自定义身份验证并生成 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));

我正在本地进行测试,我预计会向客户端发送一个错误,说明令牌已过期。我做错了什么?

【问题讨论】:

    标签: c# azure jwt azure-mobile-services


    【解决方案1】:

    当令牌过期时,不会直接发生任何事情。当您第一次尝试使用该令牌时,对于使用 [Authorize] 属性的任何端点,您应该会收到 401 Unauthorized 错误。那是因为您提交的令牌不再有效。

    【讨论】:

      【解决方案2】:

      有一个 5 分钟的到期宽限期来解决时钟偏差问题。我猜您是在 10 秒后但 5 分钟宽限期到期之前的某个时间发送此令牌。尝试等待超过 5 分钟以确认令牌是否已过期。

      【讨论】:

      • 在浪费了数小时的调查之后,这就是解决方案。 Azure 团队应该在不到 5 分钟的时间内添加了异常或某种警报。好地方。
      • 我知道他们建议甚至考虑 15 分钟的时钟偏差,但这个数字很荒谬。此外,他们的服务器(至少根据 S/O 上的各种帖子)与
      猜你喜欢
      • 2012-08-20
      • 2015-01-24
      • 1970-01-01
      • 2017-12-25
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 2019-11-26
      相关资源
      最近更新 更多