Pregunta

Tengo un sitio web alojado en IIS con autenticación de Windows. Estoy intentando acceder a él en una de las aplicaciones web de mi iPhone. Actualmente estoy usando este código, pero no funciona.

NSString * authString = [[[NSString stringWithFormat: @ "% @:% @ " ;, @ " myusername " ;, @ " mypassword "] dataUsingEncoding: NSUTF8StringEncoding] base64Encoding];

authString = [NSString stringWithFormat: @"Basic %@", authString];

**[requestObj setValue:authString forHTTPHeaderField:@"Authorization"];**

mi aplicación web está alojada con autenticación de Windows. Pero aquí estoy usando básico. ¿Alguien puede publicar cuál es el encabezado http correcto para él?

Gracias ..

¿Fue útil?

Solución

Creo que la principal diferencia es que necesita especificar el dominio con el que se está autenticando, así como el nombre de usuario y la contraseña. Algo como esto debería funcionar. He usado una solicitud síncrona por brevedad, idealmente debería usar un ASINetworkQueue o NSOperationQueue para realizar la solicitud.

NSString *username = @"test";
NSString *password = @"test";
NSString *domain = @"test";
NSURL *url = [NSURL URLWithString:@"http://myurl"];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];
[request setUseSessionPersistence:YES];
[request setUsername:username];
[request setPassword:password];
[request setDomain:domain];
[request start];
if ([request error]) {
    if ([[request error] code] == ASIAuthenticationErrorType) {
        //Authentication failed
    }
} else {
    NSLog([request responseString]);
}

No tengo acceso a un servidor de Windows para probar esto, pero he probado NTLM en el pasado, así que debería funcionar ... :)

Otros consejos

La autenticación de Windows (NTLM) no es tan simple como la autenticación básica. NTLM requiere más de un webrequest para negociar la seguridad, por lo que no hay un encabezado HTTP estático que pueda enviar para iniciar sesión.

Puede utilizar la biblioteca ASIHTTPRequest de terceros para realizar NTLM a través de la autenticación HTTP.

No estoy 100% seguro de que sea compatible con la autenticación NTLM, pero ¿ha investigado la conexión : didReceiveAuthenticationChallenge en NSUrlConnection?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top