2011-05-30 28 views
5

Estoy haciendo algunos programas ios que acceden a la AppStore a través de StoreKit y mi propio servidor a través de https. Estoy tratando de acceder a ambos desde detrás de un firewall corporativo. Tengo acceso a servidores proxy que requieren 'No Auth', 'Aut. Básica', & 'NTLM Auth'.Autenticación HTTP Proxy en iOS 4.3

El acceso mediante 'No Auth' no tiene problemas, pero los otros dos me están dando dolor de cabeza. Estoy usando 'NSURLRequest's para conectarme a mi servidor pero estoy de regreso: [NSHTTPURLResponse statusCode]: 407 - autenticación de proxy requerida "Cache-Control" = "no-cache"; "Content-Length" = 2428; "Content-Type" = "text/html"; Caduca = 0; "Proxy-Authenticate" = "Reinos básicos = \" WebMarshal Proxy Server \ ""; "Proxy-Connection" = "keep-alive"; Servidor = "WebMarshal Proxy"; Via = "1.1 NZ8KS49CH"; "X-Webmarshal-Requestid" = "8854B349-B35E-48EF-A643-3C6C6FEC5F9C"; }

Al leer la guía de programación de URL, sugiere que la clase NSURL '... admite de forma transparente tanto los servidores proxy como las pasarelas SOCKS utilizando las preferencias del sistema del usuario.'

Pero no parece manejar el trabajo de forma autónoma, sin embargo, puedo encontrar poca referencia sobre cómo tratar la autenticación de proxy manualmente.

¿Debo volver a ejecutar manualmente la solicitud con un encabezado 'Proxy-Authorization'? Si es así, ¿entonces qué interfaz se utiliza para recuperar o solicitar las credenciales de usuario actuales?

BTW No estoy esperando grandes esperanzas para que funcione la autenticación NTLM, ya que parece que NSURLConnection no lo admite, pero debe ser Basic Auth.

Gracias por cualquier sugerencia ...

Respuesta

1

sí se tienen que manejar manualmente la solicitud de autenticación de proxy.

Lea la sección llamada challanges de autenticación see here.

En pocas palabras, respondes a un evento en tu delegado de nsurlconnection. A continuación, le pide al usuario un nombre de usuario y contraseña de proxy, luego de lo cual responde a la solicitud con los detalles de autenticación. (No tiene que volver a enviar la solicitud, como lo hace iOS maneja eso).