2016-08-19 2 views
0

Mein Verständnis: In einem Azure App Service können Sie den Dienst grundsätzlich so einrichten, dass er niemals einschläft, indem Sie die Einstellung "Always On" in Azure Portal festlegen.Azure App Service-Token verloren, nachdem Dienst gestoppt wurde

Während dies eine einfache Änderung des Dienstes ist, versuche ich zu vermeiden, dass der Dienst ständig ausgeführt wird, wenn er nicht verwendet wird, und die monatlichen Ausgaben für das Hosting des Dienstes hochtreiben.

Mein Dilemma ist, dass ich einen Azure App Service ausgeführt habe, für den ich eine Xamarin Forms App authentifiziere. Bei der Anmeldung gebe ich ein OAuth-Token an den Client zurück, der in 15 Tagen ablaufen soll (etwas, was zum Testen benötigt wird).

Alles funktioniert gut, während der Azure-Dienst ausgeführt wird, aber wenn der Azure-Dienst "einschläft", muss ich mich erneut anmelden. Dies führt zu der Annahme, dass die vom Dienst ausgegebenen Token verloren gegangen sind schlafend.

Meine Frage ist: Gibt es eine Möglichkeit, die aktuellen Token in einem Azure Table Storage (oder etwas) vor dem "Einschlafen" zu speichern, dann aus dem gleichen Speicher ziehen, wenn der Dienst "aufwacht" ??

Ich habe die Frage unten findet, kann aber nicht ein klares Verständnis davon, wie die Inhaber Token bestehen bleiben: How are bearer tokens stored server-side in Web API 2?

Ich habe mit klarem Hinweis hoher und niedrigen gesucht, wie dies zu tun, lassen alleine wenn das überhaupt möglich ist.

Jede Hilfe würde sehr geschätzt werden.

+0

Um dies zu verdeutlichen, erstellen Sie in diesem Szenario einen benutzerdefinierten Authentifizierungsmechanismus, der das Zugriffstoken für Ihre Clients bereitstellt, und Ihre Clients nutzen dieses Token für den Zugriff auf die API im Dienst? Und jetzt möchten Sie das Token im Tabellenspeicher speichern? –

+0

Hallo Gary - Ja, aber nicht für einen bestimmten Benutzer, aber für alle gültigen (nicht abgelaufen) Token. Als Beispiel (unter Verwendung einer herkömmlichen asp.net-Website) können Sie mit der Funktion global.asax bestimmte Aktivitäten für Application_Start/Application_Stop ausführen. Ich möchte die Tokens persistieren, bevor der App Service schläft (keine Anfragen), aber wenn er aufwacht, möchte ich die persistierten Token wieder einspielen, um Folgendes nicht zu erfordern: - erzwingen, dass Benutzer sich wieder anmelden Die mobile App - den Azure App Service nicht auf "Immer ein" setzen Es sei denn, Sie glauben, dass es einen besseren Ansatz als die Verwendung von Azure Table Storage gibt. – XxtappsxX

Antwort

1

Die Antwort von How are bearer tokens stored server-side in Web API 2? Sie finden, ist richtig. Normalerweise speichern wir das Zugriffstoken auf der Client-Seite. Sie können es an jedem beliebigen Ort in Ihren Clients, lokalen Speicher, SQLite, sogar Dateien speichern. Um sicherzustellen, dass Ihre Anwendung das Zugriffstoken zurückerhalten kann.

Wenn Ihre Anwendung HTTP-Anforderungen an den geschützten Server sendet, legen Sie das Zugriffstoken in Authorization header fest.

Und wenn Ihr Server einmal eine HTTP-Anfrage erhält, wird er das Token verifizieren und den Benutzer autorisieren.

Verwandte Themen