Ich verwende benutzerdefinierte Authentifizierung und erzeuge ein JWT-Token.Azure Mobile Apps, Autorisierung funktioniert, Tokenablauf funktioniert jedoch nicht
Wenn ich zu einem Dienst posten, wird jedes Autorisierungsattribut, das heißt [Authorize(Roles = "Admin")]
, respektiert, und Benutzer, die diese Rolle nicht haben, erhalten einen Autorisierungsfehler (gut!). Dies unterstreicht für mich, dass die Tokengenerierung und das Zurückschreiben funktioniert!
Wenn jedoch ein Token abläuft, passiert nichts. Und als gültiges Token behandelt wird, während ich eine Art Ausnahme sollte immer, ist mein Code dies:
app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions()
{
SigningKey = ConfigurationManager.AppSettings["authSigningKey"],
ValidAudiences = new[] { ConfigurationManager.AppSettings["authAudience"] },
ValidIssuers = new[] { ConfigurationManager.AppSettings["authIssuer"] },
TokenHandler = config.GetAppServiceTokenHandler()
});
Und:
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));
Ich prüfe vor Ort und ich erwarte einen Fehler mit einem abgelaufenen Token an den Client gesendet werden. Was mache ich falsch?
Nach verschwendeten Stunden der Untersuchung war dies die Lösung. Das Azure-Team sollte eine Ausnahme oder eine Art Warnung für weniger als 5 Minuten hinzugefügt haben. Gute Stelle. – Adam
Ich weiß, dass sie eine Taktverschiebung von 15 Minuten sogar empfehlen, aber die Zahl ist lächerlich. Auch ihre Server (zumindest nach verschiedenen Posts hier auf S/O) sind ziemlich synchron mit der Zeitverschiebung im Bereich von <3 Sekunden. –