2009-03-10 9 views
10

Estoy tratando de acceder a algunos servicios web en una aplicación de iPhone.Cómo realizar un desafío NTLM en el iPhone

Si yo GET en la página .asmx, me autentico y obtengo el WSDL como se esperaba.

Sin embargo, si yo POST a la página .asmx, estableciendo SOAPAction, Content-Type, Content-Length y HTTPBody, sigo recibiendo mensajes didReceiveAuthenticationChallenge.

Además, estoy tratando de POSTAR a IIS utilizando la Autenticación de Windows integrada (IWA), lo que significa que estoy tratando de negociar un desafío NTLM.

Respuesta

11

Desafortunadamente encontré mi respuesta. NSURLConnection no puede hacer la autenticación NTLM. Aquí hay una publicación sobre cómo hacer la autenticación NTLM usando la pila CFNetwork.

HTTP Post via the CFNetwork stack

encontrado algo mejor que hacer todo eso tedio: Alguien que ya lo ha hecho!
ASIHTTPRequest

Actualización: Hay una workaround for iOS 4 que permite la autenticación NTLM nuevo

+0

Gracias! ASIHTTPRequest era justo lo que estaba buscando. – Dana

2

Me parece que su servicio web tiene diferentes permisos de lectura y de escritura. No creo que esto sea un problema con iPhone o NSURLConnection en absoluto.

+0

El cliente web funciona bien y si puedo crear una aplicación .NET, que funciona muy bien también. Pero creo que podría verificar los permisos por las dudas. –

+0

Los permisos para GET y POST son idénticos. –

+0

¿Estás seguro? Algo que la función POST está haciendo podría requerir autenticación, como escribir en un archivo. Es muy probable que el cliente .NET se esté autenticando. ¿Has intentado realizar la llamada en un depurador HTTP? http://ditchnet.org/httpclient/ – Lounges

Cuestiones relacionadas