보안: 통합 Windows 인증

등록일시: 2014-01-29 08:00,  수정일시: 2014-01-30 10:44
조회수: 7,493
이 문서는 ASP.NET Web API 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.

통합 Windows 인증(Integrated Windows Authentication)을 사용하면 사용자가 커버로스(Kerberos)나 NTLM을 이용해서 자신의 Windows 자격 증명으로 로그인 할 수 있습니다. 이때, 클라이언트는 자격 증명을 Authorization 헤더에 담아서 전송합니다. 통합 Windows 인증은 인트라넷 환경에 가장 적합한 방법입니다. 관련된 더 많은 정보들은 Windows Authentication 문서를 참고하시기 바랍니다.

장점 단점
  • IIS에 내장됨
  • 사용자의 자격 증명을 계속 요청과 함께 전송하지 않음
  • 만약, 클라이언트 컴퓨터가 도메인에 속해 있으면 (예, 인트라넷 응용 프로그램), 사용자가 자격 증명을 직접 입력할 필요가 없음
  • 인터넷 응용 프로그램에는 권장되지 않음
  • 클라이언트가 커버로스나 NTLM을 지원해야만 함
  • 클라이언트가 엑티브 디렉터리에 가입되어 있어야 함

만약, 응용 프로그램이 Windows Azure에서 호스트 되고 있고, 별도로 온-프레미스(On-Premise) 엑티브 디렉터리 도메인도 운영하고 있다면, 온-프레미스 AD와 Windows Azure 엑티브 디렉터리의 페더링(Federating)을 고려해보시기 바랍니다. 이를 적용하면, 사용자가 자신의 온-프레미스 자격 증명으로 로그인 하되, 실제 인증은 Windows Azure AD에 의해서 수행됩니다. 이에 관한 더 자세한 정보는 Windows Azure Authentication 문서를 참고하시기 바랍니다.

통합 Windows 인증을 사용하는 응용 프로그램을 작성하려면 MVC 4 프로젝트 마법사에서 "인터넷 응용 프로그램(Internet Application)" 템플릿을 선택합니다. 이 프로젝트 템플릿은 Web.config 파일에 다음과 같은 구성을 설정해줍니다:

<system.web>
    <authentication mode="Windows" />
</system.web>

반면 클라이언트 측에서는, 대부분의 주요 브라우저들을 비롯한 Negotiate 인증 스킴을 지원하는 모든 브라우저에서 통합 Windows 인증을 사용할 수 있습니다. .NET 클라이언트 응용 프로그램의 경우, HttpClient 클래스에서 Windows 인증을 지원합니다:

HttpClientHandler handler = new HttpClientHandler()
{
    UseDefaultCredentials = true
};

HttpClient client = new HttpClient(handler);

통합 Windows 인증은 크로스 사이트 요청 위조(CSRF) 공격에 취약합니다. 보다 자세한 내용은 보안: 크로스 사이트 요청 위조(Cross-Site Request Forgery) 공격 방지하기 문서를 참고하시기 바랍니다.