1

로컬 웹 서버 (IIS, Windows 8)를 사용하여 응용 프로그램을 테스트하고 사이트에 기본 인증이 필요하며 자격 증명을 명시 적으로 전달하면 모든 것이 잘 작동합니다.기본 인증을 사용하는 HttpWebRequest가 DefaultNetworkCredentials의 401 erorr과 함께 실패합니다.

request.Credentials = new NetworkCredential("User", "Password", "Domain"); 
request.PreAuthenticate = true; 

하지만 통합 보안을 사용하고 싶습니다, 그래서 나는 다음과 같이 첫 번째 라인을 변경하려고 :

request.Credentials = CredentialCache.DefaultNetworkCredentials; 

(나는 또한 시도 DefaultCredentials를)

피들러 (Fiddler)와 네트워크 트래픽을 확인한 결과, 두 번째 경우에는 승인 헤더없이 HTTP 요청이 전송되는 것을 볼 수 있습니다. 따라서 실패한 것은 놀라운 일이 아닙니다. 하지만 왜?

UPDATE. 나는 기본 신임장 개념을 잘못 이해했다고 생각한다. DefaultNetworkCredentials는 기본 인증 헤더를 생성하는 데 사용할 수 없으며 사용자/비밀번호 쌍이어야합니다. 따라서이 동작은 의도적으로 설계된 동작입니다.

+2

바보 같은 질문이 될 수 있습니다,하지만 당신은 IIS에서 웹 사이트에 대한 통합 인증을 사용 했습니까? 서버가 승인하는 인증 메커니즘을 설명하는 헤더 (메모리 : www-authenticate negotiate)가 표시됩니다. – dash

+0

클라이언트 자격 증명을 클라이언트 역할을하는 웹 서버 경계에서 다른 서버로 나가려면 위임을 구성해야합니다. NTLM은 위임 할 수 없습니다. Kerberos를 사용할 수 있습니다. –

+0

@DarinDimitrov,하지만 모두 동일한 서버에서 발생합니다. 내 로컬 컴퓨터 일 뿐이야. –

답변

0

주제에 대해 의견을 보낸 사람들 덕분에 기본 자격 증명의 개념을 잘못 이해했습니다. 기본 인증 만 사용되는 경우 사용할 수 없으므로 올바른 동작입니다.