Con una actualización de la API del cliente, el método HTTPBasicAuthication se ha reemplazado por un encabezado de autorización OAuth2 Bearer
.OAuth 2 bearer Encabezado de autorización
Con la antigua API que haría lo siguiente:
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];
Pero esto no va a trabajar con el encabezado Bearer
.
Ahora, normalmente yo sólo añadiría el encabezado de mi auto añadiendo que de este modo:
NSString *authorization = [NSString stringWithFormat:@"Bearer %@",self.account.token];
[urlRequest setValue:authorization forHTTPHeaderField:@"Authorization"];
Pero el problema con esta solución es que la API redirigir la mayoría de las llamadas a otras URL, esto tiene que ver con seguridad Después de redireccionar el NSURLRequest
, el encabezado de Autorización se elimina de la solicitud y, como no puedo agregar el método del Portador al NSURLCredentialStorage
, ya no se puede autenticar después de haber sido redirigido.
¿Cuáles serían las buenas soluciones? Solo puedo pensar en atrapar la redirección y modificar NSURLRequest
, por lo que incluye el encabezado Bearer
. ¿Pero cómo?
usted es una leyenda. Me encontré con el mismo problema y el manejo del redireccionamiento lo solucionó. – rawbeans