Domanda

Ho un sito Web ospitato su IIS con autenticazione di Windows. Sto provando ad accedervi in ??una delle mie applicazioni web per iPhone. Attualmente sto usando questo codice, ma non funziona.

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

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

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

la mia app Web è ospitata con l'autenticazione di Windows. ma qui sto usando di base. qualcuno può pubblicare qual è l'intestazione http corretta per esso.

Grazie ..

È stato utile?

Soluzione

Penso che la differenza principale sia che devi specificare il dominio in cui stai eseguendo l'autenticazione, nonché il nome utente e la password. Qualcosa del genere dovrebbe funzionare. Ho usato una richiesta sincrona per brevità, idealmente dovresti usare un ASINetworkQueue o NSOperationQueue per eseguire la richiesta.

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]);
}

Non ho accesso a un server Windows per testarlo, ma ho testato NTLM in passato, quindi dovrebbe funzionare ... :)

Altri suggerimenti

L'autenticazione di Windows (NTLM) non è semplice come l'autenticazione di base. NTLM richiede più di una richiesta web per negoziare la sicurezza, quindi non esiste un'intestazione HTTP statica che puoi inviare per accedere.

Puoi utilizzare la libreria ASIHTTPRequest di terze parti per eseguire l'autenticazione NTLM su HTTP.

Non sono sicuro al 100% che supporti l'autenticazione NTLM ma hai studiato il metodo : didReceiveAuthenticationChallenge su NSUrlConnection?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top