Share via


연습: 역할을 사용하여 웹 사이트 사용자 관리

업데이트: 2007년 11월

많은 ASP.NET 응용 프로그램에서 멤버 전용 페이지와 같이 제한된 리소스에 액세스할 수 있도록 사용자를 인증하는 멤버 자격을 사용합니다. 응용 프로그램에서 여러 사용자를 지원하거나 사용자 목록이 시간에 따라 변경되는 경우에는 역할을 설정하여 사용자 액세스를 관리하는 것을 고려하십시오. 역할은 관리자, 영업 또는 멤버와 같은 그룹의 이름입니다. 역할을 설정하고 나면 개별 사용자를 역할에 할당할 수 있습니다. 그런 다음 역할에 권한을 부여하여 해당 역할의 모든 사용자가 할당한 권한을 상속하도록 할 수 있습니다. 따라서 역할을 사용하면 사용자 그룹의 권한을 효율적으로 관리할 수 있습니다.

이 연습을 통해 다음과 같은 작업 방법을 배웁니다.

  • 응용 프로그램의 역할 설정

  • 역할에 사용자 할당

  • 서로 다른 역할에 따라 페이지에 대한 액세스 권한을 선택적으로 부여하거나 거부하는 규칙(권한) 만들기

  • 사용자가 특정 역할에 포함되어 있는지 여부와 현재 사용자가 포함되어 있는 역할을 프로그램 방식으로 확인

사전 요구 사항

이 연습을 따라 하려면 다음과 같은 요건을 갖추어야 합니다.

  • Visual Studio

  • .NET Framework

  • 컴퓨터에 로컬로 설치된 IIS

  • 컴퓨터에 로컬로 설치된 SQL Server Express Edition

  • 개별 사용자를 식별하는 방법

    참고:

    작업 응용 프로그램에서는 Windows 사용자 계정을 사용하는 등의 다양한 방법으로 사용자를 식별할 수 있습니다. 하지만 이 연습에서는 사용자가 사이트에 로그인하여 자신을 식별합니다. 따라서 이 연습을 따라 하려면 사이트가 ASP.NET 멤버 자격을 사용하도록 구성되어 있어야 합니다. 사이트에 멤버 자격이 이미 구성되어 있으면 이 연습의 시작 지점으로 해당 사이트를 사용할 수 있습니다.

웹 사이트, 멤버 자격 및 역할 구성

ASP.NET 역할을 사용하기 전에 사용할 수 있는 웹 사이트가 있어야 하며 사이트를 구성하여 멤버 자격을 사용하도록 설정하고 사용자 역할을 설정해야 합니다. 연습: 멤버 자격과 사용자 로그인을 사용하는 웹 사이트 만들기 항목을 완료한 경우 이 연습에서 구성한 웹 사이트를 사용할 수 있습니다.

사용할 수 있는 웹 사이트가 아직 없는 경우에는 다음 절차에 따라 새로 만듭니다. 그렇지 않으면 다음 단원인 "멤버 전용 페이지의 폴더 만들기"로 이동합니다.

로컬 IIS 웹 사이트를 만들려면

  1. Visual Studio를 엽니다.

  2. 파일 메뉴에서 새웹 사이트를 클릭합니다.

    새 웹 사이트 대화 상자가 나타납니다.

  3. Visual Studio에 설치되어 있는 템플릿에서 ASP.NET 웹 사이트를 선택합니다.

  4. 위치 목록 상자에서 파일 시스템을 선택합니다.

  5. 찾아보기를 클릭한 후 C:\RolesWebSite와 같이 응용 프로그램의 디렉터리를 선택합니다.

  6. 언어 상자에서 작업할 프로그래밍 언어를 클릭합니다.

    선택하는 프로그래밍 언어는 웹 사이트의 기본 언어가 되지만 페이지마다 개별적으로 프로그래밍 언어를 설정할 수 있습니다.

  7. 새 웹 사이트 대화 상자에서 확인을 클릭합니다.

    Visual Web Developer에서는 해당 웹 사이트와 Default.aspx라는 새 페이지를 만듭니다.

멤버 전용 페이지의 폴더 만들기

역할을 사용하려면 액세스가 제한된 페이지를 보관할 수 있는 MemberPages 및 GuestPages라는 두 개의 폴더를 만들어야 합니다.

참고:

멤버 자격 연습의 웹 사이트를 다시 사용하는 경우 이 폴더가 이미 있으므로 다음 절차의 1단계를 건너뛸 수 있습니다.

액세스가 제한된 폴더를 만들려면

  1. 솔루션 탐색기에서 웹 사이트의 루트를 마우스 오른쪽 단추로 클릭하고 새 폴더를 클릭한 다음 폴더 이름을 MemberPages로 지정합니다.

    이 폴더에는 일부 사용자만 액세스할 수 있는 페이지가 포함됩니다.

  2. 웹 사이트의 루트를 마우스 오른쪽 단추로 클릭하고 새 폴더를 클릭한 다음 폴더 이름을 GuestPages로 지정합니다.

    이 폴더에는 익명 사용자를 제외하고 로그인한 모든 사용자가 액세스할 수 있는 페이지가 포함됩니다.

웹 사이트에서 멤버 자격 및 역할 구성

기본 웹 사이트를 만든 후 이 웹 사이트에서 멤버 자격과 역할을 사용하도록 구성할 수 있습니다.

웹 사이트에서 멤버 자격과 역할을 구성하려면

  1. 웹 사이트 메뉴에서 ASP.NET 구성을 클릭합니다.

  2. 보안 탭을 선택하고 보안 설정 마법사를 사용하여 보안을 단계별로 구성하십시오. 링크를 클릭한 후 다음을 클릭합니다.

  3. 마법사의 2단계로 이동하여 인터넷 옵션을 선택합니다.

    웹 사이트에서 사용할 인증 방법을 선택할 수 있는 페이지가 마법사에 표시됩니다.

    이 옵션을 선택하면 사용자들이 이 연습 뒷부분에서 만들게 될 로그인 페이지를 사용하여 응용 프로그램에 로그인하는 폼 인증이 사용됩니다.

  4. 다음을 클릭합니다.

    사용자 정보가 고급 공급자 설정을 사용하여 저장됨을 나타내는 메시지가 표시됩니다. 응용 프로그램은 웹 사이트의 App_Data 폴더에 있는 SQL Server Express Edition 데이터베이스 파일에 멤버 자격 정보를 저장하는 기본 공급자를 사용합니다.

  5. 다시 다음을 클릭합니다.

  6. 4단계: 역할 정의에서 이 웹 사이트에 역할을 사용하도록 설정합니다. 확인란을 선택하고 다음을 클릭합니다.

  7. 메시지가 나타나면 멤버와 게스트라는 두 개의 역할을 만든 후 다음을 클릭합니다.

  8. 5단계: 새 사용자 추가에서 member1, guest1, memberGuest라는 세 사용자를 만듭니다.

    원하는 경우 강력한 암호를 지정할 수 있지만 이 암호를 기억해야 합니다. 암호는 7자 이상이어야 하며 영숫자 이외의 문자를 하나 이상 포함해야 합니다. 전자 메일 주소의 경우 본인의 주소를 사용하십시오. 이 연습에서는 전자 메일 메시지를 보내지 않습니다.

    참고:

    아직 웹 사이트 관리 도구를 닫지 마십시오.

만들고 있는 웹 사이트에서는 사용자가 해당 역할에 따라 서로 다른 페이지에 액세스할 수 있습니다. 따라서 역할에 따라 액세스할 수 있는 폴더를 결정하는 액세스 규칙을 만들어야 합니다.

사이트 폴더의 액세스 규칙을 설정하려면

  1. 웹 사이트 관리 도구의 보안 마법사에서 다음을 클릭합니다.

    6단계: 새 액세스 규칙 추가에는 웹 사이트의 페이지에 액세스할 수 있는 역할 또는 사용자를 결정하는 규칙을 만들 수 있는 페이지가 표시됩니다.

  2. 이 규칙을 적용할 디렉터리 선택에서 루트 노드를 확장한 다음 GuestPages를 클릭합니다.

  3. 규칙 적용 대상에서 익명 사용자를 선택합니다.

  4. 권한에서 거부를 선택합니다.

    만들려는 규칙에서는 익명 사용자 즉, 로그인하지 않은 사용자의 액세스를 거부합니다.

  5. 이 규칙 추가를 클릭합니다.

    새 규칙이 페이지 아래에 있는 표에 규칙이 표시됩니다. 사용자가 GuestPages 디렉터리의 페이지를 요청하면 규칙을 위에서 아래로 순서대로 검사하여 사용자가 페이지에 액세스할 수 있는지 여부를 확인합니다. 사용자가 로그인하지 않은 경우 이 폴더의 페이지는 표시되지 않습니다.

  6. 이 규칙을 적용할 디렉터리 선택에서 MemberPages를 클릭합니다.

  7. 규칙 적용 대상에서 역할을 선택한 다음 드롭다운 목록에서 멤버를 클릭합니다.

  8. 권한에서 허용을 선택합니다.

    만들려는 규칙에서는 MemberPages 폴더에 대한 액세스 권한을 멤버 역할에 포함되는 모든 사람에게 부여합니다.

  9. 이 규칙 추가를 클릭합니다.

  10. 이 규칙을 적용할 디렉터리 선택에서 MemberPages를 클릭합니다.

  11. 규칙 적용 대상에서 모든 사용자를 선택합니다.

  12. 권한에서 거부를 선택합니다.

  13. 이 규칙 추가를 클릭합니다.

    MemberPages 폴더에 대한 두 번째 규칙에서는 멤버 역할에 포함된 사용자를 제외하고는 아무도 폴더에 액세스할 수 없도록 합니다. 규칙은 표에 표시된 순서대로 위에서 아래로 처리됩니다.

    첫 번째 규칙(허용)에서는 멤버라는 역할의 사용자에게 액세스 권한을 부여합니다. 두 번째 규칙(거부)에서는 다른 모든 사용자의 액세스를 거부합니다. 허용 또는 거부 규칙을 응용 프로그램에 필요한 만큼 많이 만들 수 있습니다. 사용자가 MemberPages 디렉터리의 페이지를 요청하면 규칙이 위에서 아래로 순서대로 적용되어 사용자가 페이지에 액세스할 수 있는지 여부를 확인합니다.

  14. 마침을 클릭하여 보안 탭으로 돌아갑니다.

    참고:

    아직 웹 사이트 관리 도구를 닫지 마십시오.

역할에 사용자 할당

만든 사용자를 역할에 할당하는 마지막 구성 단계를 수행해야 합니다.

역할에 사용자를 할당하려면

  1. 웹 사이트 관리 도구의 보안 탭에 있는 사용자에서 사용자 관리를 클릭합니다.

  2. guest1에 대한 행에서 역할 편집을 클릭합니다.

    역할 상자에는 사용할 수 있는 역할 목록이 채워져 있습니다.

  3. 게스트 확인란을 선택하여 guest1 사용자를 게스트 역할에 할당합니다.

  4. member1에 대한 행에서 역할 편집을 클릭하고 member1 사용자를 멤버 역할에 할당합니다.

  5. 같은 방법을 사용하여 memberGuest 사용자를 게스트와 멤버 역할 모두에 할당합니다.

  6. 웹 사이트 관리 도구를 닫고 다음을 수행합니다.

    1. 솔루션 탐색기에서 새로 고침 아이콘을 클릭합니다.

    2. 웹 사이트 메뉴에서 ASP.NET 구성을 클릭하여 웹 사이트 관리 도구를 다시 시작합니다.

      그러면 웹 사이트 관리 도구에서 사용한 멤버 자격 데이터베이스 연결이 닫힙니다.

    3. 웹 사이트 관리 도구를 다시 닫습니다.

액세스가 제한된 페이지 추가

멤버 자격 및 역할 설정을 테스트하려면 사용자를 식별할 수 있도록 사용자의 로그인 방법을 만들어야 합니다. 만든 액세스 규칙을 테스트할 수 있는 웹 페이지도 만들어야 합니다.

모든 사용자의 기본 페이지를 만들려면

  1. Visual Studio로 전환합니다.

  2. Default.aspx 페이지를 열거나 이 페이지로 전환한 다음 디자인 뷰로 전환합니다.

    Default.aspx 페이지가 없는 경우에는 웹 사이트의 루트에 페이지 하나를 추가합니다.

    참고:

    이 페이지의 이름을 Default.aspx로 지정해야 합니다. 이 이름은 이 연습의 뒷부분에서 사용됩니다.

  3. 환영!과 같은 텍스트로 제목을 추가합니다.

  4. 도구 상자의 로그인 그룹에서 LoginStatus 컨트롤을 페이지로 끌어 옵니다.

    LoginStatus 컨트롤을 클릭하면 사용자가 아직 로그인하지 않은 경우 Login.aspx 페이지로 이동합니다.

  5. 도구 상자의 로그인 그룹에서 LoginName 컨트롤을 페이지로 끌어 옵니다. FormatString 속성을 "안녕하세요, {0}님"으로 설정합니다.

    사용자가 로그인한 경우 LoginName 컨트롤에는 사용자 이름이 표시됩니다.

  6. 도구 상자의 표준 그룹에서 HyperLink 컨트롤을 페이지로 끌어 옵니다. HyperLink 컨트롤의 속성 패널에서 Text 속성을 게스트 및 멤버로, href 속성을 ~/GuestPages/Guests.aspx로 설정합니다.

    참고:

    Guests.aspx 페이지는 이 연습의 뒷부분에서 만듭니다.

  7. 도구 상자의 표준 그룹에서 다른 HyperLink 컨트롤을 페이지로 끌어 옵니다. HyperLink 컨트롤의 속성 패널에서 Text 속성을 멤버로, href 속성을 ~/MemberPages/Members.aspx로 설정합니다.

    참고:

    Members.aspx 페이지는 이 연습의 뒷부분에서 만듭니다.

이제 모든 사용자가 사용할 수 있는 홈 페이지가 만들어졌습니다. 여기서 사용자가 추가 페이지에 연결할 수 있고, 이들 페이지 중 일부는 제한됩니다. 다음 단계에서는 간단한 로그인 페이지를 만듭니다.

로그인 페이지를 만들려면

  1. 솔루션 탐색기에서 웹 사이트의 루트 폴더를 마우스 오른쪽 단추로 클릭한 다음 새 항목 추가를 선택합니다. 웹 사이트에 Login.aspx라는 Web Form을 추가합니다.

  2. Login.aspx 페이지에서 디자인 뷰로 전환합니다.

  3. 도구 상자의 로그인 그룹에서 Login 컨트롤을 페이지로 끌어 옵니다.

  4. Login 컨트롤의 속성 패널에서 DestinationPageUrl 속성을 ~/Default.aspx로 설정합니다.

마지막으로 사이트의 제한된 콘텐츠를 나타내는 페이지를 만들어야 합니다.

제한된 페이지를 만들려면

  1. 솔루션 탐색기에서 GuestPages 폴더를 마우스 오른쪽 단추로 클릭하고 새 항목 추가를 클릭한 다음 이 폴더에 Guests.aspx라는 Web Form을 추가합니다.

  2. 디자인 뷰로 전환한 다음 Guests.aspx 페이지에 게스트 페이지 시작과 같은 제목을 추가합니다.

  3. 도구 상자의 표준 그룹에서 HyperLink 컨트롤을 페이지로 끌어 옵니다. HyperLink 컨트롤의 속성 패널에서 Text 속성을 홈으로, href 속성을 ~/Default.aspx로 설정합니다.

  4. 솔루션 탐색기에서 MemberPages 폴더를 마우스 오른쪽 단추로 클릭하고 새 항목 추가를 선택한 다음 Members.aspx라는 Web Form을 추가합니다.

  5. 디자인 뷰로 전환하고 Members.aspx 페이지에 멤버 페이지 시작과 같은 제목을 추가합니다.

  6. 도구 상자의 표준 그룹에서 HyperLink 컨트롤을 페이지로 끌어 옵니다.

  7. HyperLink 컨트롤의 속성 패널에서 Text 속성을 홈으로, href 속성을 ~/Default.aspx로 설정합니다.

    액세스를 제한하려는 페이지에 코드를 추가할 필요는 없습니다. 페이지가 액세스 규칙으로 보호되는 폴더에 있기 때문에 제한됩니다.

역할 테스트

이제 사이트를 테스트할 수 있습니다.

역할을 테스트하려면

  1. Default.aspx 페이지로 전환한 다음 Ctrl+F5를 눌러 실행합니다.

  2. 게스트 및 멤버를 클릭합니다.

    익명 사용자를 허용하지 않는 페이지에 액세스하려 하기 때문에 Login.aspx 페이지로 리디렉션됩니다.

  3. 게스트 역할에 포함되어 있는 guest1로 로그인합니다.

    성공적으로 로그인하고 나면 Guests.aspx 페이지로 리디렉션됩니다.

    홈을 클릭하여 Default.aspx 페이지로 돌아갑니다.

    Default.aspx 페이지에서 LoginName 컨트롤을 놓은 위치에 안녕하세요, guest1님이라는 텍스트가 표시됩니다. 또한 이제 guest1로 로그인했기 때문에 LoginStatus 컨트롤의 텍스트가 로그인에서 로그아웃으로 변경되었습니다.

  4. 게스트 및 멤버를 클릭합니다.

    게스트 역할의 사용자로 이미 로그인했기 때문에 이번에는 Guests.aspx 페이지로 직접 이동합니다.

  5. 홈을 클릭하여 Default.aspx 페이지로 돌아갑니다.

  6. 멤버를 클릭합니다.

    guest1은 Members.aspx 페이지에 대한 권한이 없기 때문에 Login.aspx 페이지로 리디렉션됩니다.

  7. member1 또는 memberGuest로 로그인합니다.

    이제 멤버 역할의 사용자로 로그인했기 때문에 Members.aspx 페이지로 리디렉션됩니다.

  8. 홈을 클릭하여 Default.aspx 페이지로 돌아갑니다.

    이제 페이지에 새 로그인 이름이 표시됩니다.

다음 단계

이 연습에서는 ASP.NET 역할 관리의 기본 기능에 대해 설명합니다. 역할 관리의 추가 기능을 테스트할 수도 있습니다. 예를 들어, 다음과 같은 경우입니다.

  • 멤버 자격 시스템에서 만든 사용자 지정 역할 대신 Windows 역할을 사용합니다.

  • 프로그램 방식으로 역할을 사용합니다. 자세한 내용은 역할을 사용하여 권한 부여 관리를 참조하십시오.

  • 또한 기존 또는 사용자 지정 데이터 저장소에 멤버 자격 및 역할 정보를 저장할 수 있는 사용자 지정 공급자를 만들 수 있습니다. 자세한 내용은 역할 공급자 구현을 참조하십시오.

  • 웹 사이트의 탐색 구조에 표시되는 링크에 액세스 규칙을 적용합니다. 자세한 내용은 연습: 보안 역할을 기반으로 사이트 맵 노드 필터링을 참조하십시오.

참고 항목

작업

연습: 멤버 자격과 사용자 로그인을 사용하는 웹 사이트 만들기

연습: 보안 역할을 기반으로 사이트 맵 노드 필터링

개념

역할 관리 이해

참조

AuthorizationSection