Con un aggiornamento all'API del client, il metodo HTTPBasicAuthoration è stato sostituito con un'intestazione Autorizzazione OAuth2 Bearer
.OAuth 2 portante Intestazione autorizzazione
Con la vecchia API vorrei fare le seguenti operazioni:
NSURLCredential *credential = [NSURLCredential credentialWithUser:self.account.username
password:self.account.token
persistence:NSURLCredentialPersistenceForSession];
NSURLProtectionSpace *space = [[NSURLProtectionSpace alloc] initWithHost:kAPIHost
port:443
protocol:NSURLProtectionSpaceHTTPS
realm:@"my-api"
authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
Ma questo non funzionerà con l'intestazione Bearer
.
Ora normalmente vorrei solo aggiungere l'intestazione mia auto aggiungendo in questo modo:
NSString *authorization = [NSString stringWithFormat:@"Bearer %@",self.account.token];
[urlRequest setValue:authorization forHTTPHeaderField:@"Authorization"];
Ma il problema con questa soluzione è che l'API reindirizzare la maggior parte delle chiamate ad altri URL, questo ha a che fare con sicurezza. Dopo il reindirizzamento dello NSURLRequest
, l'intestazione di autorizzazione viene rimossa dalla richiesta e poiché non riesco ad aggiungere il metodo del portatore allo NSURLCredentialStorage
, non può più autenticarsi dopo essere stato reindirizzato.
Quali sarebbero le buone soluzioni? Posso solo pensare di prendere il reindirizzamento e modificare lo NSURLRequest
in modo che includa l'intestazione Bearer
. Ma come?
sei una leggenda. Ho riscontrato lo stesso problema e la gestione del reindirizzamento l'ha risolto. – rawbeans