다음을 통해 공유


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

업데이트: 2007년 11월

웹 사이트의 공통 요구 사항은 특정 페이지에 대한 액세스를 제한하는 것입니다. ASP.NET 역할 관리와 ASP.NET URL 권한 부여를 함께 사용하면 보안 역할을 기반으로 웹 파일에 대한 액세스를 제한할 수 있습니다. 사이트 맵은 보안 트리밍이라는 기능을 사용하여 역시 역할을 기반으로 제한된 파일에 대한 탐색 링크를 숨겨 보안 구성을 완성합니다.

역할은 사용자 그룹의 이름입니다. 역할을 설정한 후 개별 사용자 계정을 역할에 할당할 수 있습니다. 역할을 기반으로 사이트 맵의 노드와 웹 파일에 대한 액세스를 제한할 수 있습니다.

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

  • 멤버 자격과 사용자 로그인을 사용하여 웹 사이트를 만듭니다.

  • 웹 사이트에 대한 역할을 설정하고 사용자 계정을 해당 역할에 할당합니다.

  • 선택적으로 페이지 액세스를 허용하거나 거부하는 URL 권한 부여 규칙을 만듭니다.

  • 사이트 맵을 만들고 보안 트리밍을 설정합니다.

  • 웹 페이지에 탐색 메뉴를 만듭니다.

사전 요구 사항

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

  • Microsoft Visual Web Developer

  • .NET Framework

  • 컴퓨터에 로컬로 설치된 IIS(인터넷 정보 서비스)

  • 또한 이 연습에서는 개별 사용자 계정을 식별하는 방법이 필요합니다. 작동하는 응용 프로그램의 경우 Windows 사용자 계정 등의 다양한 방법으로 사용자를 식별할 수 있습니다. 그러나 이 연습에서는 사용자가 사이트에 로그인하여 자신을 식별하므로 ASP.NET 멤버 자격과 폼 인증을 사용하도록 구성된 사이트가 있어야 합니다. 멤버 자격이 구성된 사이트가 이미 있으면 이 연습의 시작 지점으로 해당 사이트를 사용할 수 있습니다.

멤버 자격과 사용자 로그인을 사용하여 웹 사이트 만들기

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

웹 사이트 만들기

연습: Visual Web Developer에서 기본 웹 페이지 만들기와 같이 Visual Web Developer에서 웹 사이트를 이미 만들었으면 해당 웹 사이트를 사용하여 다음 단원으로 이동합니다. 그렇지 않으면, 다음 단계를 따라 새 웹 사이트와 페이지를 만듭니다.

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

  1. Visual Web Developer를 엽니다.

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

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

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

  4. 언어 드롭다운 목록에서 작업할 프로그래밍 언어를 클릭합니다.

  5. 위치 드롭다운 목록에서 HTTP를 선택합니다.

    또는 사용 가능한 IIS 서버가 없는 경우 파일 시스템을 선택할 수 있습니다. 그러나 HTTP를 사용하면 실제 배포 시나리오와 같이 브라우저에서 페이지를 표시하여 테스트할 수 있습니다.

  6. 찾아보기를 클릭합니다.

    위치 선택 대화 상자가 표시됩니다. 이전 단계에서 HTTP를 선택한 경우 로컬 IIS 단추가 선택되어 있어야 합니다. 그렇지 않으면 로컬 IIS를 클릭합니다.

  7. 기본 웹 사이트 노드를 선택합니다.

  8. 오른쪽 맨 위의 새 웹 응용 프로그램 만들기 아이콘을 클릭한 다음 새 웹 사이트의 이름을 SiteNavigation으로 지정합니다.

  9. 열기를 클릭한 다음 확인을 클릭합니다.

    Visual Web Developer에서는 해당 웹 사이트를 만들고 Default.aspx라는 새 페이지를 엽니다. 기본적으로 Visual Web Developer는 해당 코드 숨김 파일(이 경우 Default.aspx.cs)을 사용하여 새 페이지를 만듭니다. 새 항목 추가 마법사를 사용하여 나중에 새 페이지를 만들 때 이를 변경할 수 있습니다.

    참고:

    이전 버전의 .NET Framework가 Visual Web Developer보다 먼저 설치되어 있으면 최신 버전의 .NET Framework를 사용하도록 웹 사이트를 구성할 때 오류가 발생할 수 있습니다. 나타나는 대화 상자에서 를 클릭하여 서버에 ASP.NET 버전 2.0을 설정하거나 IIS 관리자를 사용하면 이 오류를 수정할 수 있습니다. IIS 관리자에서 응용 프로그램을 마우스 오른쪽 단추로 클릭하고 속성을 클릭한 다음 ASP.NET 탭을 클릭합니다. ASP.NET 버전 옆에서 Visual Web Developer와 함께 설치된 .NET Framework의 버전을 선택합니다.

멤버 자격 설정 및 사용자 만들기

멤버 자격이 설정되어 있지 않으면 다음 절차에 따라 설정합니다. 이미 설정되어 있으면 다음 단원으로 이동합니다.

멤버 자격을 설정하려면

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

    웹 사이트 관리 도구가 나타납니다.

  2. 보안 탭을 클릭하고 사용자에서 인증 형식 선택을 클릭한 다음 인터넷을 클릭하고 완료를 클릭합니다.

    이 옵션은 응용 프로그램에서 폼 인증을 사용하도록 지정합니다. 이 경우 사용자는 나중에 이 연습에서 만드는 로그인 페이지를 사용하여 응용 프로그램에 로그인합니다.

  3. 보안 탭에서 사용자 만들기를 클릭합니다.

    응용 프로그램에 대해 두 개의 사용자 계정을 만들 것입니다.

  4. 사용자 만들기 상자에 응용 프로그램의 사용자를 정의하는 정보를 입력합니다. 다음 값을 지침으로 사용합니다. 원하는 값을 사용할 수 있지만 나중에 이 연습에서 사용할 수 있도록 입력 내용을 기록해 두십시오.

    • **사용자 이름   **첫 번째 사용자 계정의 이름으로 Customer01을 사용합니다.

    • **암호   **원하는 암호를 사용합니다. 최소 8자 이상이고 대문자와 소문자, 문장 부호를 포함하는 강력한 암호를 사용하는 것이 좋습니다.

    • **전자 메일   **올바른 형식의 전자 메일 주소를 사용합니다. 이 연습에는 전자 메일 보내기가 포함되지 않으므로 존재하지 않는 전자 메일 주소를 사용할 수도 있습니다.

    • **보안 질문 및 보안 대답   **나중에 암호를 복구해야 하는 경우 사용할 수 있는 질문과 대답을 입력합니다.

  5. 활성 사용자 확인란을 선택한 다음 사용자 만들기를 클릭합니다.

  6. 확인 페이지에서 계속을 클릭합니다.

  7. 앞의 세 단계를 반복하여 Employee01이라는 새 사용자 계정을 만듭니다. 이러한 사용자 계정의 역할을 만들 때는 모두 소문자로 된 이름을 사용합니다.

  8. 페이지 오른쪽 아래의 뒤로 단추를 클릭하여 보안 시작 페이지로 돌아갑니다.

사용자 로그인 페이지 만들기

나중에 이 연습에서 구성할 멤버 자격과 역할 설정을 테스트하려면 사용자를 식별할 수 있도록 사용자 로그인 방법을 만들어야 합니다.

로그인 상태를 표시하는 모든 사용자를 위한 기본 페이지를 만들려면

  1. Default.aspx 페이지를 열고 디자인 뷰로 전환합니다.

    Default.aspx 페이지가 없으면 웹 사이트의 루트에 새로 추가합니다.

    참고:

    나중에 이 연습에서 사용되므로 페이지 이름을 Default.aspx로 지정해야 합니다.

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

    LoginStatus 컨트롤은 사용자가 로그인하지 않은 경우 자동으로 Login.aspx 페이지를 사용자에게 표시합니다.

  3. LoginStatus 컨트롤 오른쪽에 커서를 놓고 Enter 키를 누른 다음 추가 공백을 포함하여 안녕하세요 를 입력합니다.

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

    LoginName 컨트롤은 사용자가 로그인한 경우 사용자 이름을 표시합니다.

  5. 페이지를 저장한 다음 닫습니다.

이제 모든 사용자가 사용할 수 있는 홈 페이지가 생성되었습니다. 다음 단계에서는 간단한 로그인 페이지를 만듭니다.

로그인 페이지를 만들려면

  1. 웹 사이트의 루트에 Login.aspx라는 페이지를 추가합니다.

  2. Login.aspx 페이지를 열고 디자인 뷰로 전환합니다.

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

  4. Login 컨트롤을 마우스 오른쪽 단추로 클릭하고 속성을 클릭한 다음 DestinationPageUrlDefault.aspx로 설정합니다.

  5. 페이지를 저장한 다음 닫습니다.

웹 사이트에 대한 역할 설정 및 해당 역할에 사용자 할당

보안 트리밍 작업을 시작하기 전에 사용자 역할을 설정해야 합니다.

역할 설정

보안 트리밍이 제대로 작동하려면 역할을 설정해야 합니다.

역할을 설정하려면

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

    웹 사이트 관리 도구가 나타납니다.

  2. 보안 탭을 클릭한 다음 역할 설정을 클릭합니다.

역할 만들기 및 해당 역할에 사용자 계정 할당

이제 역할이 설정되었지만 역할을 만들고 사용자 계정을 해당 역할에 할당할 때까지는 액세스 규칙을 만들 수 없습니다.

역할을 만들고 사용자 계정을 할당하려면

  1. 웹 사이트 관리 도구가 열려 있지 않으면 다음 단계를 따라 엽니다. Visual Web Developer의 웹 사이트 메뉴에서 ASP.NET 구성을 클릭합니다.

    웹 사이트 관리 도구가 나타납니다.

  2. 보안 탭을 클릭한 다음 역할 만들기 또는 관리를 클릭합니다.

    두 개의 역할을 만들 것입니다.

  3. 새 역할 만들기 상자에 고객을 입력한 다음 역할 추가를 클릭합니다.

  4. 앞의 단계를 반복하여 직원이라는 역할을 만듭니다.

  5. 역할 이름 상자에서 고객 옆의 관리를 클릭합니다.

    고객 역할에 추가할 사용자 계정을 목록에서 선택할 수 있는 페이지가 표시됩니다.

  6. 사용자 검색 상자에서 모두를 클릭합니다.

    웹 사이트의 모든 사용자 계정이 표시됩니다. 목록이 너무 길면 사용자 이름의 첫 문자를 기준으로 검색할 수도 있습니다.

  7. 사용자 이름 Customer01 옆에 있는 역할에 사용자 포함 열의 상자를 선택합니다.

    이제 사용자 Customer01은 고객 역할의 멤버가 되었습니다.

  8. 뒤로를 클릭하여 새 역할 만들기 페이지로 돌아갑니다.

  9. 앞의 두 단계를 반복하여 사용자 Employee01을 직원 역할에 추가합니다.

  10. ASP.NET 응용 프로그램 관리 페이지를 닫습니다.

선택적으로 페이지 액세스를 허용하거나 거부하는 규칙 만들기

보안 트리밍을 테스트하려면 웹 사이트의 폴더와 페이지를 만든 다음 해당 폴더와 페이지에 대해 보안 권한을 설정해야 합니다.

이 연습에 필요한 폴더 및 페이지 만들기

웹 사이트에는 지금부터 만들 수 있는 몇 개의 페이지로 연결되는 사이트 맵 구조가 포함될 것입니다.

필요한 폴더와 페이지를 만들려면

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

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

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

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

  3. EmployeesOnly 폴더에 Discounts.aspx라는 새 페이지를 만듭니다.

  4. Customers 폴더에 Support.aspx라는 새 페이지를 만듭니다.

  5. 웹 사이트의 루트에 Hardware.aspx, Software.aspx, Training.aspx 및 Consulting.aspx라는 4개의 새 페이지를 만듭니다.

  6. 방금 만든 각각의 새 페이지에서 디자인 뷰로 전환하고 페이지 맨 위의 페이지 제목을 입력한 다음 제목 서식을 **<H1>**로 지정하여 페이지를 찾을 때 식별할 수 있게 합니다.

  7. 새 페이지를 저장한 다음 닫습니다.

액세스 규칙 만들기

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

EmployeesOnly 폴더에 대한 액세스 규칙을 설정하려면

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

    웹 사이트 관리 도구가 나타납니다.

  2. 보안 탭에서 액세스 규칙 관리를 클릭한 다음 새 액세스 규칙 추가를 클릭합니다. 새 액세스 규칙 추가 페이지가 표시됩니다.

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

  4. 규칙 적용 대상에서 역할을 클릭한 다음 상자에서 직원을 클릭합니다.

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

    방금 만든 규칙은 직원 역할의 모든 사용자에게 EmployeesOnly 폴더에 대한 액세스 권한을 부여합니다.

  6. 확인을 클릭합니다.

    새 규칙이 액세스 규칙 관리 테이블의 표에 표시됩니다. 사용자가 EmployeesOnly 폴더의 페이지를 요청하면 위에서 아래로 규칙을 순서대로 확인하여 사용자에게 페이지 액세스를 허용할지 여부를 결정합니다. 사용자가 직원 역할의 멤버가 아니면 이 폴더의 페이지는 표시되지 않습니다.

  7. 새 액세스 규칙 추가 링크를 클릭합니다.

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

  9. 권한에서 거부를 선택한 다음 확인을 클릭합니다.

    EmployeesOnly 폴더에 대한 두 번째 규칙은 직원 역할의 사용자를 제외하고 아무도 이 폴더에 액세스할 수 없도록 합니다. 규칙은 표에 나타난 대로 위에서 아래로 순서대로 처리됩니다.

    첫 번째 규칙(허용)은 직원 역할의 사용자에게 액세스 권한을 부여합니다. 두 번째 규칙(거부)은 다른 모든 사용자에게 액세스 권한을 거부합니다. 응용 프로그램에 대해 필요한 만큼 허용 또는 거부 규칙을 만들 수 있습니다. 사용자가 EmployeesOnly 폴더의 페이지를 요청하면 위에서 아래로 규칙을 순서대로 확인하여 사용자에게 페이지 액세스를 허용할지 여부를 결정합니다.

다음 단계에서는 Customers 폴더에 대해 이전 절차를 반복합니다. 그러나 Customers 폴더에 대한 액세스 권한을 얻기 위해 고객 및 직원 역할을 모두 사용할 수 있습니다. 실제 시나리오의 예로 전화 지원 직원이 고객과 동일한 페이지를 액세스할 수 있도록 하려는 회사를 고려합니다.

Customers 폴더에 대한 액세스 규칙을 설정하려면

  1. 새 액세스 규칙 추가 링크를 클릭합니다.

  2. 규칙 적용 대상에서 역할 상자를 선택한 다음 상자에서 고객을 클릭합니다.

  3. 권한에서 허용을 선택한 다음 확인을 클릭합니다.

    방금 만든 규칙은 고객 역할의 모든 사용자에게 Customers 폴더에 대한 액세스 권한을 부여합니다.

  4. 액세스 규칙 관리에서 Customers를 클릭합니다.

  5. 새 액세스 규칙 추가 링크를 클릭합니다.

  6. 규칙 적용 대상에서 역할 상자를 선택한 다음 상자에서 직원을 클릭합니다.

  7. 권한에서 허용을 선택한 다음 확인을 클릭합니다.

    방금 만든 규칙은 직원 역할의 모든 사용자에게도 Customers 폴더에 대한 액세스 권한을 부여합니다.

  8. 액세스 규칙 관리에서 Customers를 클릭합니다.

  9. 새 액세스 규칙 추가 링크를 클릭합니다.

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

  11. 권한에서 거부 상자를 선택한 다음 확인을 클릭합니다.

    Customers 폴더에 대한 첫 번째 및 두 번째 규칙은 고객 역할이나 직원 역할의 계정을 가진 사용자를 제외하고 아무도 Customers 폴더에 액세스할 수 없도록 합니다. 규칙은 표에 나타난 대로 위에서 아래로 순서대로 처리됩니다.

    첫 번째 규칙(허용)은 멤버 역할의 계정을 가진 사용자에게 액세스 권한을 부여합니다. 두 번째 규칙(거부)은 다른 모든 사용자에게 액세스 권한을 거부합니다. 응용 프로그램에 대해 필요한 만큼 허용 또는 거부 규칙을 만들 수 있습니다. 사용자가 Customers 폴더의 페이지를 요청하면 위에서 아래로 규칙을 순서대로 확인하여 사용자에게 페이지 액세스를 허용할지 여부를 결정합니다.

  12. 완료를 클릭하여 보안 탭으로 돌아갑니다.

사이트 맵 만들기 및 보안 트리밍 설정

이 연습 단계에서는 웹 사이트의 탐색 구조를 설명하는 사이트 맵을 만든 다음 Web.config 파일을 편집하여 사이트 맵 노드의 보안 트리밍을 설정합니다.

사이트 맵 만들기

사이트 탐색을 사용하려면 사이트의 페이지 레이아웃을 설명하는 방법이 필요합니다. 기본 방법은 페이지 제목과 URL을 비롯하여 사이트 계층이 포함된 XML 파일을 만드는 것입니다.

각 페이지는 사이트 맵에서 siteMapNode 요소로 표시됩니다. 최상위 노드는 홈 페이지를 나타내고 자식 노드는 사이트 하위 수준에 있는 페이지를 나타냅니다.

사이트 맵을 만들려면

  1. 솔루션 탐색기에서 웹 사이트의 이름을 마우스 오른쪽 단추로 클릭한 다음 새 항목 추가를 클릭합니다.

  2. 새 항목 추가 대화 상자:

    1. Visual Studio에 설치되어 있는 템플릿에서 사이트 맵을 클릭합니다.

    2. 이름 상자에서 이름이 Web.sitemap인지 확인합니다.

      참고:

      파일 이름이 Web.sitemap이고 웹 사이트의 루트에 표시되어야 합니다.

    3. 추가를 클릭합니다.

  3. 다음 XML 콘텐츠를 Web.sitemap 파일로 복사하여 XML 파일의 기본 내용을 덮어씁니다.

    <?xml version="1.0" encoding="utf-8" ?>
    <siteMap>
      <siteMapNode title="Home" description="Home" 
           url="~/default.aspx" >
        <siteMapNode title="Products" 
             description="Our products" 
             roles="*">
          <siteMapNode title="Hardware" 
               description="Hardware we offer" 
               url="~/Hardware.aspx" />
          <siteMapNode title="Software" 
               description="Software for sale" 
               url="~/Software.aspx" />
          <siteMapNode title="Discounts" 
               description="Employee Discounts" 
               url="~/EmployeesOnly/Discounts.aspx" />
        </siteMapNode>
        <siteMapNode title="Services" 
             description="Services we offer" 
             roles="*">
          <siteMapNode title="Training" 
               description="Training" 
               url="~/Training.aspx" />
          <siteMapNode title="Consulting" 
               description="Consulting" 
               url="~/Consulting.aspx" />
          <siteMapNode title="Support" 
               description="Support" 
               url="~/Customers/Support.aspx" />
        </siteMapNode>
      </siteMapNode>
    </siteMap>
    

    Web.sitemap 파일에는 세 수준으로 중첩되는 siteMapNode 요소 집합이 포함됩니다. 각 요소의 구조는 같으며 유일한 차이점은 XML 계층 내의 위치입니다.

    샘플 XML 파일에 정의된 페이지의 URL은 정규화되어 있지 않으므로 모든 페이지는 응용 프로그램 루트에 상대적인 URL을 가진 것으로 처리됩니다. 그러나 특정 페이지에 대해 임의의 URL을 지정할 수 있습니다. 사이트 맵에 정의한 논리 구조가 폴더의 실제 페이지 레이아웃과 반드시 일치할 필요는 없습니다.

    roles 특성은 사이트 맵의 Products 노드와 Services 노드에서만 설정됩니다. 이러한 두 노드에는 url 특성이 없습니다. ASP.NET은 .aspx 페이지의 액세스 규칙을 사용하여 사이트 맵 노드가 사용자에게 표시되어야 하는지 여부를 확인합니다. url 특성이 없으면 보안 트리밍이 설정된 경우 사용자가 페이지를 볼 수 없습니다. roles 특성을 별표(*) 또는 와일드카드 문자로 설정하면 액세스 권한이 모든 사용자에게로 확장됩니다.

  4. 파일을 저장한 다음 닫습니다.

보안 트리밍 설정

방금 만든 사이트 맵은 기본 사이트 맵 공급자인 XmlSiteMapProvider를 사용합니다. 따라서 ASP.NET에는 기본 사이트 맵에 대한 내장 구성이 있기 때문에 Web.config 파일에 siteMap 요소(ASP.NET 설정 스키마) 요소를 포함할 필요가 없습니다. 그러나 보안 트리밍은 기본적으로 설정되지 않으므로 siteMap 요소(ASP.NET 설정 스키마) 요소를 설정해야 합니다.

보안 트리밍을 설정하려면

  1. Visual Web Developer에서 웹 사이트의 루트를 마우스 오른쪽 단추로 클릭한 다음 폴더 새로 고침을 클릭합니다.

    솔루션 탐색기에 Web.config 파일이 나타납니다. 이 연습의 앞부분에서와 같이 ASP.NET 구성 도구를 사용하거나 새 항목 추가를 선택하면 Web.config 파일을 만들 수 있습니다.

  2. Web.config 파일을 엽니다.

  3. siteMap 요소(ASP.NET 설정 스키마) 요소가 이미 있으면 해당 요소를 찾습니다.

    siteMap 요소(ASP.NET 설정 스키마) 요소가 없으면 system.web 요소(ASP.NET 설정 스키마) 요소 내부에 다음 코드를 붙여 넣습니다. 다른 요소 내부에 붙여 넣지 않도록 주의하십시오.

    <siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
      <providers>
        <add name="XmlSiteMapProvider"
          description="Default SiteMap provider."
          type="System.Web.XmlSiteMapProvider"
          siteMapFile="Web.sitemap"
          securityTrimmingEnabled="true" />
      </providers>
    </siteMap>
    
  4. Web.config 파일을 저장한 다음 닫습니다.

보안 트리밍 기능은 각 요청에 대해 URL 권한 부여를 사용하여 사용자가 siteMapNode 요소와 연결된 URL에 액세스할 수 있는지를 확인합니다. 권한이 부여되는 노드 수에 따라 이러한 추가 작업으로 인해 성능이 저하됩니다. 보안 트리밍이 설정된 경우 다음 메서드를 사용하여 성능을 향상시킬 수 있습니다.

  • 사이트 맵 파일의 노드 수 제한   150개가 넘는 노드가 포함된 사이트 맵 파일에서 보안 트리밍 작업을 수행하려면 오랜 시간이 걸릴 수 있습니다.

  • siteMapNode 요소에 대해 명시적으로 roles 특성 설정   모든 클라이언트에 안전하게 표시할 수 있는 노드에서만 roles 특성을 별표(*)로 설정해야 합니다. roles 특성이 있으면 사용자가 특성에 나열된 역할 중 하나에 속할 때 ASP.NET에서 siteMapNode와 연결된 URL에 대해 URL 권한 부여를 사용하지 않을 수 있습니다.

페이지에 탐색 메뉴 만들기

사이트 맵과 일부 페이지를 만들었으면 사이트에 탐색을 추가할 수 있습니다.

또는 SiteMapPath 컨트롤이나 Menu 컨트롤을 사용하여 사이트 탐색을 표시할 수 있습니다. 자세한 내용은 탐색 ASP.NET 컨트롤 또는 연습: 웹 사이트에 사이트 탐색 추가를 참조하십시오.

TreeView 컨트롤을 사용하여 탐색 메뉴 만들기

TreeView 컨트롤을 축소 가능한 탐색 메뉴로 사용합니다.

탐색 메뉴를 추가하려면

  1. Default.aspx 페이지를 열고 디자인 뷰로 전환합니다.

  2. 도구 상자의 데이터 그룹에서 SiteMapDataSource 컨트롤을 페이지로 끌어 옵니다.

    기본 구성을 적용하면 SiteMapDataSource 컨트롤은 이전에 만든 Web.sitemap 파일에서 정보를 가져오므로 컨트롤에 대한 추가 정보를 지정할 필요가 없습니다.

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

    TreeView 작업 메뉴가 나타납니다.

  4. TreeView 작업 메뉴의 데이터 소스 선택 상자에서 SiteMapDataSource1을 클릭합니다.

  5. 페이지를 저장합니다.

SiteMapPath 컨트롤을 사용하여 탐색 메뉴 만들기

사용자에게 루트 페이지로 돌아가는 경로를 표시하는 breadcrumb 스타일의 탐색 표시 역할을 할 SiteMapPath 컨트롤을 사용합니다.

탐색 메뉴를 추가하려면

  1. Hardware.aspx 페이지를 열고 디자인 뷰로 전환합니다.

    SiteMapPath 컨트롤의 작동 방식을 설명하기 위해 깊이 중첩된 페이지에 컨트롤을 배치합니다.

  2. 이 페이지의 <H1> 태그 내부에 제목을 추가한 경우 오른쪽에 커서를 놓고 Enter 키를 누릅니다.

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

    SiteMapPath 작업 메뉴가 나타나지만 데이터 소스를 구성할 필요는 없습니다.

  4. 페이지를 저장합니다.

보안 트리밍 테스트

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

보안 트리밍을 테스트하려면

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

    TreeView 컨트롤에 Discounts 또는 Support 링크가 표시되지 않아야 합니다.

  2. 로그인을 클릭합니다.

  3. 고객 역할의 사용자 계정인 Customer01로 로그인합니다.

    이제 TreeView 컨트롤에 Support 링크가 표시되어야 합니다.

  4. 로그아웃을 클릭한 다음 로그인을 클릭합니다.

  5. 직원 역할의 사용자 계정인 Employee01로 로그인합니다.

    이제 TreeView 컨트롤에 Discounts 링크와 Support 링크가 모두 표시되어야 합니다. 직원에게는 어떤 링크도 제한되지 않으므로 사용 가능한 모든 링크가 표시되어야 합니다.

  6. Default.aspx 페이지에서 Hardware를 클릭하여 SiteMapPath 컨트롤을 표시합니다.

    SiteMapPath 컨트롤에 홈 페이지에서 Hardware 페이지로의 경로가 표시되어야 합니다.

현재 웹 사이트 상태에서는 탐색 트리가 홈 페이지에만 나타납니다. 응용 프로그램의 각 페이지에 SiteMapDataSource 및 TreeView 컨트롤을 추가하여 각 페이지에서 탐색 메뉴를 표시할 수도 있습니다. 또는 마스터 페이지 파일이 참조하는 모든 페이지에서 자동으로 나타나도록 마스터 페이지에 탐색 트리를 배치할 수 있습니다.

다음 단계

이 연습에서는 ASP.NET 사이트 탐색의 기본 기능인 탐색 컨트롤, 역할 관리 및 보안 트리밍에 대해 배웁니다. 다른 탐색 기능을 테스트해 볼 수도 있습니다. 예를 들어, 마스터 페이지를 참조하는 모든 페이지에서 표시되도록 마스터 페이지에 탐색 컨트롤을 배치할 수 있습니다. 자세한 내용은 연습: Visual Web Developer에서 ASP.NET 마스터 페이지 생성 및 사용을 참조하십시오.

참고 항목

작업

연습: 웹 사이트에 사이트 탐색 추가

개념

ASP.NET 사이트 탐색 개요

ASP.NET 사이트 맵 보안 트리밍

ASP.NET 사이트 탐색 보안

데이터 액세스 보안

사용자 고유의 코드 액세스 권한 만들기

기타 리소스

호스팅된 환경에서의 ASP.NET 응용 프로그램 보안