Windows 인증으로 사용자 인증(VB)

작성자: Microsoft

MVC 애플리케이션의 컨텍스트에서 Windows 인증 사용하는 방법을 알아봅니다. 애플리케이션의 웹 구성 파일 내에서 Windows 인증 사용하도록 설정하는 방법과 IIS를 사용하여 인증을 구성하는 방법을 알아봅니다. 마지막으로 [Authorize] 특성을 사용하여 컨트롤러 작업에 대한 액세스를 특정 Windows 사용자 또는 그룹으로 제한하는 방법을 알아봅니다.

이 자습서의 목표는 인터넷 정보 서비스에 기본 제공되는 보안 기능을 활용하여 MVC 애플리케이션의 보기를 암호로 보호하는 방법을 설명하는 것입니다. 특정 Windows 사용자 또는 특정 Windows 그룹의 구성원인 사용자만 컨트롤러 작업을 호출하도록 허용하는 방법을 알아봅니다.

내부 회사 웹 사이트(인트라넷 사이트)를 빌드하고 사용자가 웹 사이트에 액세스할 때 표준 Windows 사용자 이름 및 암호를 사용할 수 있도록 하려면 Windows 인증 사용하는 것이 좋습니다. 바깥쪽 웹 사이트(인터넷 웹 사이트)를 빌드하는 경우 대신 Forms 인증을 사용하는 것이 좋습니다.

Windows 인증 사용

새 ASP.NET MVC 애플리케이션을 만들 때 Windows 인증 기본적으로 사용하도록 설정되지 않습니다. 양식 인증은 MVC 애플리케이션에 사용하도록 설정된 기본 인증 유형입니다. MVC 애플리케이션의 웹 구성(web.config) 파일을 수정하여 Windows 인증 사용하도록 설정해야 합니다. 인증> 섹션을 <찾아 다음과 같이 Forms 인증 대신 Windows를 사용하도록 수정합니다.

<authentication mode="Windows">

</authentication>

Windows 인증 사용하도록 설정하면 웹 서버가 사용자 인증을 담당하게 됩니다. 일반적으로 ASP.NET MVC 애플리케이션을 만들고 배포할 때 사용하는 두 가지 유형의 웹 서버가 있습니다.

먼저 MVC 애플리케이션을 개발하는 동안 Visual Studio에 포함된 ASP.NET 개발 웹 서버를 사용합니다. 기본적으로 ASP.NET 개발 웹 서버는 현재 Windows 계정(Windows에 로그인하는 데 사용한 계정)의 컨텍스트에서 모든 페이지를 실행합니다.

ASP.NET 개발 웹 서버는 NTLM 인증도 지원합니다. 솔루션 탐색기 창에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 속성을 선택하여 NTLM 인증을 사용하도록 설정할 수 있습니다. 그런 다음 웹 탭을 선택하고 NTLM 확인란을 검사(그림 1 참조).

그림 1 - ASP.NET 개발 웹 서버에 대해 NTLM 인증 사용

clip_image002

프로덕션 웹 애플리케이션의 경우 IIS를 웹 서버로 사용합니다. IIS는 다음을 비롯한 여러 유형의 인증을 지원합니다.

  • 기본 인증 – HTTP 1.0 프로토콜의 일부로 정의됩니다. 인터넷을 통해 사용자 이름과 암호를 명확한 텍스트(Base64로 인코딩됨)로 보냅니다. - 다이제스트 인증 – 인터넷을 통해 암호 자체가 아닌 암호 해시를 보냅니다. - NTLM(통합 Windows) 인증 – Windows를 사용하는 인트라넷 환경에서 사용하기에 가장 적합한 인증 유형입니다. - 인증서 인증 – 클라이언트 쪽 인증서를 사용하여 인증을 사용하도록 설정합니다. 인증서는 Windows 사용자 계정에 매핑됩니다.

참고

이러한 다양한 유형의 인증에 대한 자세한 개요는 를 참조하세요 https://msdn.microsoft.com/library/aa292114(VS.71).aspx.

인터넷 정보 서비스 관리자를 사용하여 특정 유형의 인증을 사용하도록 설정할 수 있습니다. 모든 운영 체제의 경우 모든 유형의 인증을 사용할 수 없습니다. 또한 Windows Vista에서 IIS 7.0을 사용하는 경우 인터넷 정보 서비스 관리자에 표시되기 전에 다양한 유형의 Windows 인증 사용하도록 설정해야 합니다. 제어판, 프로그램, 프로그램 및 기능을 열고 Windows 기능을 켜거나 끄고 인터넷 정보 서비스 노드를 확장합니다(그림 2 참조).

그림 2 - Windows IIS 기능 사용

clip_image004

인터넷 정보 서비스를 사용하면 다양한 유형의 인증을 사용하거나 사용하지 않도록 설정할 수 있습니다. 예를 들어 그림 3에서는 IIS 7.0을 사용할 때 익명 인증을 사용하지 않도록 설정하고 NTLM(통합 Windows) 인증을 사용하도록 설정하는 것을 보여 줍니다.

그림 3 - Windows 통합 인증 사용

clip_image006

Windows 사용자 및 그룹 권한 부여

Windows 인증 사용하도록 설정한 후 Authorize> 특성을 사용하여 <컨트롤러 또는 컨트롤러 작업에 대한 액세스를 제어할 수 있습니다. 이 특성은 전체 MVC 컨트롤러 또는 특정 컨트롤러 작업에 적용할 수 있습니다.

예를 들어 목록 1의 홈 컨트롤러는 Index(), CompanySecrets() 및 StephenSecrets()라는 세 가지 작업을 노출합니다. 누구나 Index() 작업을 호출할 수 있습니다. 그러나 Windows 로컬 관리자 그룹의 멤버만 CompanySecrets() 작업을 호출할 수 있습니다. 마지막으로 Redmond 도메인의 Stephen이라는 Windows 도메인 사용자만 StephenSecrets() 작업을 호출할 수 있습니다.

목록 1 – Controllers\HomeController.vb

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return View()
    End Function

    <Authorize(Roles:="Managers")> _
    Function CompanySecrets()
        Return View()
    End Function


    <Authorize(Users:="redmond\swalther")> _
    Function StephenSecrets()
        Return View()
    End Function

End Class

참고

Windows UAC(사용자 계정 컨트롤)로 인해 Windows Vista 또는 Windows Server 2008로 작업할 때 로컬 관리자 그룹은 다른 그룹과 다르게 동작합니다. <컴퓨터의 UAC 설정을 수정하지 않으면 Authorize> 특성이 로컬 Administrators 그룹의 구성원을 올바르게 인식하지 못합니다.

올바른 권한 없이 컨트롤러 작업을 호출하려고 할 때 발생하는 정확한 작업은 활성화된 인증 유형에 따라 달라집니다. 기본적으로 ASP.NET 개발 서버를 사용하는 경우 빈 페이지가 표시됩니다. 페이지는 401 권한 없는 HTTP 응답 상태와 함께 제공됩니다.

반면에 익명 인증을 사용하지 않도록 설정하고 기본 인증을 사용하도록 설정된 IIS를 사용하는 경우 보호된 페이지를 요청할 때마다 로그인 대화 상자 프롬프트가 계속 표시됩니다(그림 4 참조).

그림 4 - 기본 인증 로그인 대화 상자

clip_image008

요약

이 자습서에서는 ASP.NET MVC 애플리케이션의 컨텍스트에서 Windows 인증 사용하는 방법을 설명했습니다. 애플리케이션의 웹 구성 파일 내에서 Windows 인증 사용하도록 설정하는 방법과 IIS를 사용하여 인증을 구성하는 방법을 알아보았습니다. 마지막으로 Authorize> 특성을 사용하여 <컨트롤러 작업에 대한 액세스를 특정 Windows 사용자 또는 그룹으로 제한하는 방법을 알아보았습니다.