Заголовки аутентификации HTTP для аутентификации Windows IIS - PullRequest
0 голосов
/ 07 мая 2009

У меня есть веб-сайт, размещенный на IIS с аутентификацией Windows. Я пытаюсь получить к нему доступ в одном из моих веб-приложений для iPhone. В настоящее время я использую этот код, но он не работает.

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

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

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

мое веб-приложение размещено с аутентификацией Windows. но здесь я использую основные. может любой пост, какой правильный заголовок http для него.

Спасибо ..

Ответы [ 4 ]

4 голосов
/ 08 мая 2009

Я думаю, что главное отличие заключается в том, что вам нужно указать домен, с которым вы аутентифицируетесь, а также имя пользователя и пароль. Нечто подобное должно работать. Я использовал синхронный запрос для краткости, в идеале вы должны использовать ASINetworkQueue или NSOperationQueue для выполнения запроса.

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

У меня нет доступа к серверу Windows, чтобы проверить это, но я тестировал NTLM в прошлом, поэтому он должен работать ...:)

1 голос
/ 07 мая 2009

Проверка подлинности Windows (NTLM) не так проста, как обычная проверка подлинности. NTLM требует более одного веб-запроса для согласования безопасности, поэтому нет статического HTTP-заголовка, который можно отправить для входа в систему.

0 голосов
/ 08 мая 2009

Я не уверен на 100%, что он поддерживает аутентификацию NTLM, но вы исследовали метод connection:didReceiveAuthenticationChallenge на NSUrlConnection?

0 голосов
/ 07 мая 2009

Вы можете использовать стороннюю библиотеку ASIHTTPRequest для выполнения аутентификации NTLM через HTTP.

...