AFNetworking setAuthenticationChallengeBlock

Mi server requiere un certificate de cliente, después de algún time buscando y leyendo ejemplos en documentos de AFNetworking intenté establecer setAuthenticationChallengeBlock y proporcionar un certificate de cliente.

En el browser provisto certifacete funciona bien.

[requestOperation setAuthenticationChallengeBlock:^(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge) { NSLog(@"AuthenticationChallenge"); NSString *thePath = [[NSBundle mainBundle] pathForResource:@"client" ofType:@"pfx"]; NSData *PKCS12Data = [[NSData alloc] initWithContentsOfFile:thePath]; CFDataRef inPKCS12Data = (__bridge CFDataRef)PKCS12Data; SecIdentityRef identity; [self extractIdentity:inPKCS12Data :&identity]; SecCertificateRef certificate = NULL; SecIdentityCopyCertificate (identity, &certificate); const void *certs[] = {certificate}; CFArrayRef certArray = CFArrayCreate(kCFAllocatorDefault, certs, 1, NULL); NSURLCnetworkingential *cnetworkingential = [NSURLCnetworkingential cnetworkingentialWithIdentity:identity certificates:(__bridge NSArray*)certArray persistence:NSURLCnetworkingentialPersistencePermanent]; [challenge.sender useCnetworkingential:cnetworkingential forAuthenticationChallenge:challenge]; }]; [requestOperation start]; 

pero el código dentro del bloque nunca se llama y el server devuelve el error 403 como se esperaba.

El código en otros bloques como setUploadBlock etc. funciona bien.

¿Alguna idea de dónde está mi error?

Me encontré con un problema similar esta noche. Después de una mayor investigación de los files de cabecera de AFNetworking, encontré mi problema. Me olvidé de establecer el bloque setAuthenticationAgainstProtectionSpaceBlock en mi operación.

  [requestOperation setAuthenticationAgainstProtectionSpaceBlock:^BOOL(NSURLConnection *connection, NSURLProtectionSpace *protectionSpace) { NSLog(@"Auth against protected space [%@]", protectionSpace); return YES; }]; 

Creo que AFNetworking usa este bloque para manejar el método NSURLConnectionDelegate Protocol: - (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace .