본문 바로가기
웹/ASP.Net

[2.0] HttpWebRequest 객체 이용시 현재 사용자 인증 사용하기

by 브래드.권 2009. 1. 16.


HttpWebRequest 객체를 이용하여 Server 로부터 Response 를 얻을 때, 익명 사용자 인증을 사용하기 때문에 익명 사용자의 접근 권한이 막힌 경우 인증 오류가 발생하게 됩니다.

이에, 현재 로그온 해 있는 사용자의 인증을 사용하고자 할 경우, DefaultCredentials 속성을 사용합니다.
HttpWebRequest 객체 생성 후 아래와 같은 코드 한 줄이면 됩니다.

 HttpWebRequest.Credentials = CredentialCache.DefaultCredentials


위의 HttpWebRequest.Credentials 속성에 대한 MSDN 의 설명은 아래와 같습니다.

 속성 값

 요청과 관련된 인증 자격 증명이 들어 있는 ICredentials입니다. 기본값은 Null 참조(Visual Basic의 경우 Nothing)입니다.

 설명

 Credentials
속성에는 요청의 maker를 식별할 인증 정보가 들어 있습니다. Credentials 속성은 NetworkCredential이거나 CredentialCache일 수 있습니다. 전자의 경우 NetworkCredential 개체에 들어 있는 사용자, 암호 및 도메인 정보를 사용하여 요청을 인증하고, 후자의 경우 요청의 URI(Uniform Resource Identifier)를 사용하여 요청을 인증하는 데 사용할 사용자, 암호 및 도메인 정보를 확인합니다.

 대부분의 클라이언트 시나리오에서는 현재 로그온한 사용자의 자격 증명이 들어 있는 DefaultCredentials 속성을 사용해야 합니다. 이렇게 하려면 이 속성을 설정하지 않고 UseDefaultCredentials 속성을 true로 설정합니다.

 HttpWebRequest 클래스가 ASP.NET 응용 프로그램과 같은 중간 계층 응용 프로그램에 사용되는 경우 DefaultCredentials 속성의 자격 증명은 ASP 페이지가 실행 중인 계정에 속해 있습니다(서버측 자격 증명). 일반적으로 이 속성은 요청 주체인 클라이언트의 자격 증명으로 설정합니다.

 

 Note참고

 NTLM 인증 체계를 사용하여 다른 사용자를 가장할 수 없습니다. Kerberos는 가장을 지원하도록 특별히 구성되어야 합니다.

 

 HttpWebRequest를 하나 이상의 인증 방식으로 제한하려면 CredentialCache 클래스를 사용하고 자격 증명을 하나 이상의 인증 체계에 바인딩합니다.
지원되는 인증 체계로는 다이제스트, 협상, Kerberos, NTLM 및 기본 인증이 있습니다.