IIS Windows 인증을위한 HTTP 인증 헤더
-
06-07-2019 - |
문제
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에 대한 방법?