Azure移动应用程序,授权有效,但令牌过期不起作用

时间:2016-09-21 20:38:51

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

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

我正在本地测试,我期待向客户端发送错误,说明过期的令牌。我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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