Windows 인증 보안이 적용된 IIS에서 호스팅되는 웹 서비스를 호출하려고합니다.INDY TIdHttp SSPI의 통합 보안 인증 문제
저는 INDY 10 및 TIdHttp 구성 요소와 함께 델파이 XE를 사용하고 있습니다.
유효한 사용자 이름과 암호를 전달하면 성공적으로 웹 서비스를 호출 할 수 있지만 통합 보안을 사용하여 호출 스레드의 자격 증명을 자동으로 사용하므로 사용자가 직접 세부 정보를 입력 할 필요가 없습니다. .
내가 uses 절에 IdAuthenticationSSPI을 포함하고 HTTP 요청 전화를했습니다
IdHttp1.Request.BasicAuthentication := False;
IdHttp1.HTTPOptions := [hoInProcessAuth];
// IdHttp1.Request.Username := '...'; // including this works
// IdHttp1.Request.Password := '...'; // including this works
IdHttp1.Get(myURL, myOutputStream);
나의 이해는 자격 증명이 전달되지 않은 경우 IdAuthenticationSSPI로는 호출 스레드의 사용자를 가장 것입니다.
atozedsoftware.newsgroups 웹 사이트에서 의견을 보았지만 가능했지만 불행히도 "HTTP/1.1 401 Unauthorized"가 표시되었습니다.
누구에게 의견이 있습니까?
당신이 브라우저 (IE, FF)로 URL을 시도 않았다
그때 나는이처럼 사용? 작동하는 경우 Fiddler를 사용하여 HTTP 통신을 Indy와 비교할 수 있습니다. – mjn예. 피 들러를 사용하면 인증 섹션에서 협상을 수행 한 401 개의 결과를 볼 수 있습니다. 브라우저와 Delphi 응용 프로그램 (사용자 이름 // 암호 사용)은 모두 Negotiate에서 NTLM으로 변경 한 다음 200을 반환합니다. Username을 사용하면 암호가 주석 처리되어 협상 401 항목을 지나칠 수 없습니다. – Mattl
'IdAuthenticationSSPI'는 현재 "협상"인증을 올바르게 구현하지 않습니다. 이 문제는 아직 해결되지 않은 [알려진 문제] (http://code.google.com/p/indyproject/issues/detail?id=236&start=100)입니다. –