Possiedo un'app che comunica con un server che utilizza l'autenticazione HTTP Digest.Utilizzo dell'autenticazione HTTP Digest su iPhone
Mi sembra che la gestione della "sessione" all'interno dell'iPhone sia una "scatola nera" per noi sviluppatori. È vero che non possiamo vedere come il framework gestisce/persiste le sessioni http?
Se sono solo in penombra, qualcuno vorrebbe spiegare come gestire l'autenticazione HTTP Digest sull'iPhone?
La mia corsa di base attraverso è:
- effettua una richiesta a un URL protetto
- Server invia un client 401
- crea e persiste una credenziale, e lo passa al server
- il server verifica le credenziali, completa la richiesta se verificato, invia un altro 401 se non.
- fare una richiesta successiva per garantire url
- richieste al server di nuovo l'autorizzazione ........
Questo funziona per le singole richieste, ma se faccio supplementari, le richieste successive, l'autorizzazione richieste al server ancora. Il server ha persistito una sessione per l'utente particolare, ma l'iPhone non sta effettuando una richiesta all'interno della stessa sessione per qualche motivo ... Pertanto, il server deve eliminare l'oggetto di autenticazione e crearne uno nuovo ogni volta che il client effettua una richiesta a un url protetto.
Sono sicuro che questo non è un comportamento corretto.
Se guardiamo a come un browser si comporta in questa situazione:
- browser richiede dati da URL sicuro
- server invia 401
- browser richiede all'utente di credenziali, persiste, la trasmette al server
- server verifica le credenziali, restituendo i dati se verificato, invia un altro 401 se non.
- successive richieste fatte per proteggere gli URL non vengono richieste le credenziali perché il browser gestisce la sessione.
Sto creando NSURLCredential e lo sto persistendo all'interno di NSURLCrendtialStorage. Quindi, quando l'app riceve "didReceiveAuthenticationChallenge", recupero le credenziali dall'archivio e le restituisco, creando la credenziale se non esiste (alla prima richiesta).
Qualsiasi aiuto sarebbe molto apprezzato. Grazie.
Jasarien, prendo il segno di spunta nel senso che questo ti ha messo sulla strada giusta? (per la mia curiosità, e forse il beneficio di qualcun altro che trova lo stesso problema). –