7

Ich habe Sicherheit für meine Web-API (individuelle Konten) wie besprochen here implementiert.ASP.NET Web API-Autorisierungs-Token, die früh ablaufen

Ich habe die Website auf godaddy (Shared Hosting) gehostet und es funktioniert gut. Wenn ich mit der URL "domain.com/token" nach einem Token frage, erhalte ich das Token mit dem Ablaufdatum innerhalb von 15 Tagen. Ich habe diesen Satz in "StartupAuth.cs" mit

AccessTokenExpireTimeSpan = TimeSpan.FromDays(15) 

zB:

{ 
    "access_token":"qwertyuiop.....", 
    "token_type":"bearer", 
    "expires_in":1209599, 
    "userName":"[email protected]", 
    ".issued":"Wed, 11 Feb 2015 01:00:00 GMT", 
    ".expires":"Thu, 26 Feb 2015 01:00:00 GMT" 
} 

(I-Werte in obigen Code setzen, aber Sie bekommen die Idee des ".expires" Feld

.

5 Minuten nach dem Token immer, wenn ich versuche, und Zugang "get" oder "post" oder jede Methode in meiner API, indem Zulassung: Inhaber Token im Header als:

Authorization: Bearer qwertyuiop..... 

ich diesen Fehler:

{"Message":"Authorization has been denied for this request."} 

Obwohl die nur 5 Minuten gewesen und Token soll 15 Tage dauern, es innerhalb von 5 Minuten abläuft. Wenn ich jede Methode "Get"/"Post" innerhalb von 5 Minuten anfordern, bekomme ich die richtige Antwort mit meinen Daten in JSON. Kurz gesagt, die Autorisierung ist erfolgreich.

Ich habe dieses Verhalten wiederholt, indem ich es über Fiddler, REST-Plugin von Chrome und über die mobile App, die die API verwendet, getestet habe.

Ich habe web.config Werte für Sitzung wie unten (ich mit ihr verbundenen dachte)

<sessionState timeout="180" /> 

Beachten Sie, dass die Authentifizierung bildet nicht verwendet wird, so Timeout auf diesem Abschnitt in web.config ist nicht erforderlich.

Irgendeine Idee was ist los? Diese Zeitüberschreitung führt dazu, dass die Benutzer von mobilen Apps, die die API verwenden, sich hin und wieder neu anmelden. Jede Hilfe wäre willkommen.

Danke.

+0

Ich habe genau das gleiche Problem! Helfen Sie jemandem? –

+0

Hinzufügen von Maschine Schlüssel hat den Trick. why_not hat es auch unten erwähnt. Wie markiere ich why_nots Beitrag als Antwort? –

Antwort

4

Überprüfen Sie den WebServer, in IIS kann der Maschinenschlüssel auf der Anwendungsebene festgelegt werden, jedes Mal, wenn der App Pool recycelt wird, wird ein neuer Maschinenschlüssel generiert, daher benötigen Sie ein neues Token. Sie können den Maschinenschlüssel auf der Website- oder Root-Server-Ebene festlegen. Vielleicht könnte dies helfen

5

zu web.config hinzufügen nicht AppPool

hier
<system.web> 
    <machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B" 
      decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77" 
      validation="SHA1"/> 

Lesen Recycling betroffen sein, wie https://support.microsoft.com/en-us/kb/312906 erzeugen

-1

Versuchen Idle Time-out (Minuten) Einstellung auf mehr als 5 Minuten (in meinem Anwendungspool gefunden -> erweiterte Einstellungen).