7

Ho implementato la sicurezza per il mio Web API (account individuali) come discusso here.Token autorizzazione API API ASP.NET in scadenza presto

Ho ospitato il sito Web su Godaddy (hosting condiviso) e funziona correttamente. Quando chiedo il token usando url "dominio.com/token", ottengo il token con la data di scadenza di 15 giorni. Ho impostato questo "StartupAuth.cs" utilizzando

AccessTokenExpireTimeSpan = TimeSpan.FromDays(15) 

esempio:

{ 
    "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" 
} 

(ho messo i valori nel codice di cui sopra, ma si ottiene l'idea del campo ".expires"

.

cinque minuti dopo aver ricevuto il token, quando provo e l'accesso "ottenere" o "post" o qualsiasi altro metodo nel mio API per l'autorizzazione di passaggio: portatore di token nell'intestazione come:

Authorization: Bearer qwertyuiop..... 

ottengo questo errore:

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

Anche se il suo stato appena 5 minuti e si suppone token per una durata di 15 giorni, scade entro 5 minuti. Quando richiedo un metodo "get"/"post" entro un intervallo di 5 minuti, ottengo la risposta corretta con i miei dati in JSON. In breve, l'autorizzazione ha successo.

Ho ripetuto questo comportamento provandolo tramite Fiddler, il plugin REST di Chrome e tramite l'app mobile che utilizza l'API.

mi hanno valori web.config per sessione, come di seguito (ho pensato che il suo correlato)

<sessionState timeout="180" /> 

Nota che forma l'autenticazione non viene utilizzato, in modo timeout su quella sezione in web.config non è necessario.

Qualche idea su cosa sta succedendo? Questo timeout sta causando il re-login degli utenti di app mobili che utilizzano l'API di tanto in tanto. Qualsiasi aiuto sarebbe apprezzato.

Grazie.

+0

Ho esattamente lo stesso problema !! Qualche aiuto a qualcuno? –

+0

L'aggiunta della chiave della macchina ha fatto il trucco. why_not lo ha anche menzionato qui sotto. Come segnare il post di why_not come risposta? –

risposta

4

Controllare il server Web, in IIS è possibile impostare la chiave della macchina a livello di applicazione, ogni volta che il pool di app ricicla una nuova chiave macchina viene generato quindi è necessario un nuovo token. È possibile impostare la chiave della macchina a livello di sito Web o di server root. Forse questo potrebbe aiutare

5

Aggiungi al web.config per non essere influenzata da pool di app riciclaggio

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

Leggi qui come generare https://support.microsoft.com/en-us/kb/312906

-1

Prova a impostare Idle Time-out (minuti) per più di 5 minuti (trovati nel pool di applicazioni iis-> impostazioni avanzate).