2017-01-11 1 views
2

zu speichern Ich habe eine ASP.NET-Webanwendung, die Dokumente an den Client bereitstellt. Dieses Dokument kann in einem "separaten" System vorliegen. Um das Dokument von diesem System zu erhalten, muss ich mich anmelden, dann gibt es ein Token zurück, das ich dann bei jeder Anfrage verwende, die ich an es anlege. (die Zugangsdaten für dieses System hängen nicht vom aktuellen Benutzer meiner Anwendung ab, ich habe nur den Benutzernamen und das Passwort festgelegt)Wo Auth-Token zu einem anderen System in ASP.NET-Anwendung

Ich möchte vermeiden, mich jedes Mal anzumelden, wenn ein Dokument angefordert wird, stattdessen würde ich es vorziehen, das zu speichern Token (es läuft nach einer Stunde ab) intern.

Wie wird diese Art von Variable gespeichert?

Die Verwendung von statischen Variablen wird abgeraten und die Verwendung von Session würde das Ticket nur für einen Benutzer speichern.

+0

Haben Sie einen automatischen Prozess, der alle 55-59 Minuten ausgeführt wird, sich anmeldet und das Token in der Datenbank speichert, und dann alle Klassen, die dieses System verwenden, dieses Token aus der Datenbank lesen? –

+0

Wie wäre es mit einem Cookie mit 1hr Ablaufdatum? Persönlich speichere ich Token nicht in der Datenbank, es sei denn, ich muss ein Aktualisierungstoken ausgeben. Andere Optionen sind HTML5-Webspeicher - Sitzungsspeicher (nur verfügbar in der aktuellen Registerkarte, Wert wird beim Schließen der Registerkarte gelöscht) und Lokaler Speicher (Wert bleibt auch nach dem Schließen der Registerkarte/des Browsers erhalten) – Developer

+0

@Developer Aber dies würde ein anderes Token für speichern jeden anderen Benutzer (wenn ich richtig verstehe) und ich möchte dies vermeiden –

Antwort

1

Ich denke, was Sie haben, ist App-App-Authentifizierung, nicht Benutzer-App-Authentifizierung. In diesem Fall, wie über das Speichern von Token im Cache mit 1 Stunde Ablauf? Wenn das System versucht, das Token zu lesen, versuchen Sie zuerst, Werte aus dem Cache zu holen. Wenn es leer ist - was bedeutet, dass er sich zum ersten Mal anmeldet oder der Cache abgelaufen ist -, wird der Authentifizierungsdienst aufgerufen, das Token abgerufen und im Cache gespeichert.

In einer Load-Balanced-Umgebung kann es passieren, dass jeder Server verschiedene Tokens hat, was in Ihrem Fall in Ordnung ist. Oder Sie müssen vielleicht etwas wie Redis Cache in Betracht ziehen.

0

Wie Josh im obigen Kommentar empfohlen, wäre das Speichern von Token in der Datenbank die bessere Option.

Wie Sie dieses Token aktualisieren, ist eine Entscheidung, die Sie treffen müssen.

Sie können ein neues Token kurz vor Ablauf des alten Tokens anfordern, indem Sie einen Dienst oder Job ausführen. Und Ihre Webanwendung wird nur das neue Token verwenden, um die Dokumente abzurufen.

Auch Ihre Webanwendung kann das Token aktualisieren. Wenn das Token aus der Datenbank verwendet wird, kann es den Ablauf überprüfen und wenn das Token in den nächsten 5 Minuten abläuft, kann die Anwendung das Token erneuern/aktualisieren und das neue Token mit neuem Ablaufdatum in der Datenbank speichern und zum Abrufen der Dokumente verwenden.

Wenn das Speichern in der Datenbank zu komplex ist, können Sie das Speichern von Token und Ablaufdatum in einer temporären Datei auf dem Webserver selbst in Erwägung ziehen und den Token mithilfe eines der beiden oben genannten Verfahren aktualisieren. Der Unterschied besteht darin, dass das Token in einer Datei statt in einer Datenbank gespeichert wird.

Verwandte Themen