Заголовки HTTP-аутентификации для аутентификации Windows IIS

StackOverflow https://stackoverflow.com/questions/831926

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Спасибо..

Это было полезно?

Решение

Я думаю, что основное отличие заключается в том, что вам нужно указать домен, на котором вы проходите аутентификацию, а также имя пользователя и пароль.Что-то вроде этого должно сработать.Для краткости я использовал синхронный запрос, в идеале для выполнения запроса следует использовать 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 в прошлом, так что он должен работать...:)

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top