Pergunta

Eu tenho um site hospedado no IIS com autenticação do Windows. Eu estou tentando acessá-lo em um dos minha aplicação web iPhone. Atualmente estou usando este código, mas ele não está funcionando.

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

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

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

meu aplicativo web está hospedado com a autenticação do Windows. mas aqui eu estou usando básico. pode qualquer um pós qual é a correta http cabeçalho para ele.

Obrigado ..

Foi útil?

Solução

Eu acho que a principal diferença é que você precisa especificar o domínio que você está autenticando contra, bem como o nome de usuário e senha. Algo como isso deve funcionar. Eu usei uma solicitação síncrona para brevidade, idealmente você deve usar um ASINetworkQueue ou NSOperationQueue para executar a solicitação.

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

Eu não tenho acesso a um servidor Windows para testar isso, mas eu testei NTLM no passado, então ele deve funcionar ...:)

Outras dicas

A autenticação do Windows (NTLM) não é tão simples como a autenticação básica. NTLM requer mais do que um webrequest para negociar a segurança de modo que não é estático cabeçalho HTTP que você pode enviar para o login.

Você pode usar o terceiro ASIHTTPRequest biblioteca para executar NTLM sobre HTTP autenticação.

Eu não estou 100% de certeza que ele suporta a autenticação NTLM, mas você tem investigado o método connection:didReceiveAuthenticationChallenge na NSURLConnection?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top