tutorial open example iphone objective-c authentication ntlm

iphone - open - web view swift 4



¿Cómo implementar la Autenticación NTLM para UIWebView? (4)

A partir de iOS 3.2 y 4.1, no hay un delegado público para interceptar el desafío NTLM. Sin embargo, hay una API privada que se puede anular para brindar el soporte adecuado para esto. Como esto pondría su aplicación en peligro de ser rechazada, me abstendré de publicar el código porque no tiene valor para el desarrollo de la tienda de aplicaciones en este momento.

Tengo un caso de uso donde un UIWebView puede necesitar conectarse con un servidor web asegurado con NTLM. También tengo un caso de uso en el que ya tengo las credenciales para aprobar. Entonces, en lugar de forzar al usuario a ingresarlos, ¿cómo realizo el protocolo de enlace con UIWebView ?

ACTUALIZAR:

El uso de este método aquí funciona bastante bien cuando realiza solicitudes GET simples, pero falla completamente al realizar POST, por el mero hecho de que está haciendo un GET después de su publicación.

ASIHttpRequest y ASIWebPageRequest tienen el mismo problema. Las solicitudes GET funcionan de maravilla, pero cualquier POST simplemente no funciona. Si solo el mundo trabajara en solo solicitudes GET.

He podido utilizar este método para incluir el nombre de usuario y la contraseña en la cadena de solicitud HTTP, pero eso es tan inseguro que desafía el uso de la razón. Usando un sniffer, puedo ver que el handshake de tres vías ocurre sin ningún problema en las solicitudes GET y POST.


Puede establecer la credencial predeterminada:

NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost: _host port: 80 protocol: @"http" realm: _host authenticationMethod:NSURLAuthenticationMethodNTLM]; [[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:[NSURLCredential credentialWithUser:_username password:_password persistence:NSURLCredentialPersistenceForSession] forProtectionSpace:protectionSpace];

Ahora puedes dejar que tus vistas web realicen la solicitud y, cuando se encuentre con tu protenctionSpace, inicia sesión con las credenciales especificadas.


Si está dispuesto a probar algún código experimental, puede usar ASIWebPageRequest .

Sería un poco hacky, ya que tendrías que descargar el contenido de la página con ASIWebPageRequest, cargarlo en UIWebView, capturar los clics de enlaces en la vista web y repetir el proceso nuevamente (si el contenido en la URL requiere autenticación) . Además, creo que tendrías que administrar tu propia pila de historial.

No creo que sea fácil, pero parece factible, y parece que debería funcionar, siempre y cuando el código ASIWebPageRequest no tenga demasiados fallos o limitaciones.


UIWebView no admite autenticación en absoluto. Hasta iPhone OS 3.1, podría agregar credenciales al almacenamiento de credenciales central y UIWebView al menos funcionaría con autenticación básica. Pero a partir de iOS 4.0, no veo ninguna forma de usar la autenticación (excepto la autenticación de formularios basados ​​en cookies o URL).