我正在使用自定義身份驗證並生成JWT令牌。Azure移動應用程序,授權有效,但令牌過期不起作用
當我發佈任何服務時,任何授權屬性均表示[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));
我本地測試,我期待一個錯誤被髮送給客戶說明過期的令牌。我究竟做錯了什麼?
經過數小時的調查,這是解決方案。 Azure團隊應該在5分鐘內添加一個例外或某種警報。好點。 – Adam
我知道他們建議考慮甚至15分鐘的時鐘偏差,但數字很荒謬。此外,他們的服務器(至少根據S/O上的各種帖子)與時間偏差在<3秒範圍內幾乎同步。 –