문제

Windows 인증이있는 IIS에서 호스팅 된 웹 사이트가 있습니다. iPhone 웹 응용 프로그램 중 하나에서 액세스하려고합니다. 현재 나는이 코드를 사용하고 있지만 작동하지 않습니다.

nsstring *authstring = [[[nsstring stringwithformat :@"%@:%@",@"myusername",@"mypassword"] datausingencoding : nsutf8stringencoding] base64encoding];

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

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

내 웹 앱은 Windows 인증과 함께 호스팅됩니다. 그러나 여기 나는 BASIC을 사용하고 있습니다. 어느 누구도 올바른 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 Authentication (NTLM)은 기본 인증만큼 간단하지 않습니다. NTLM은 보안을 협상하기 위해 둘 이상의 WebRequest가 필요하므로 로그인으로 보낼 수있는 정적 HTTP 헤더가 없습니다.

타사를 사용할 수 있습니다 Asihttprequest 라이브러리 HTTP 인증을 통해 NTLM을 수행합니다.

NTLM 인증을 지원하는 100% 확신은 아니지만 connection:didReceiveAuthenticationChallenge nsurlconnection에 대한 방법?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top