Role-Based Security 기술 샘플

업데이트: 2007년 11월

이 샘플에서는 역할 기반 보안을 사용하는 방법을 보여 줍니다. 서버 응용 프로그램에서는 클라이언트 응용 프로그램이 사용 중인 사용자 계정 및 이 계정이 관리자의 역할에 속하는지 여부를 보고합니다.

샘플 사용에 대한 내용은 다음 항목을 참조하십시오.

명령 프롬프트를 사용하여 샘플을 빌드하려면

  1. 명령 프롬프트 창을 열고 RoleBasedSecurity 디렉터리 아래의 언어별 하위 디렉터리 중 하나로 이동합니다.

  2. 언어별 하위 디렉터리 중 하나에서, 선택한 프로그래밍 언어에 따라 msbuild RoleBasedSecurityCS.sln 또는 msbuild RoleBasedSecurityVB.sln을 입력합니다.

Visual Studio를 사용하여 샘플을 빌드하려면

  1. Windows 탐색기를 열고 RoleBasedSecurity 디렉터리 아래의 언어별 하위 디렉터리 중 하나로 이동합니다.

  2. 선택한 프로그래밍 언어에 따라 RoleBasedSecurityCS.sln 또는 RoleBasedSecurityVB.sln을 두 번 클릭하여 Visual Studio에서 파일을 엽니다.

  3. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

이 샘플을 실행하려면

  1. 명령 프롬프트나 Windows 탐색기를 사용하여 새 실행 파일이 포함된 디렉터리로 이동합니다.

  2. 명령줄에 RBSecDemo.exe를 입력하거나 Windows 탐색기에서 해당 아이콘을 두 번 클릭하여 RBSecDemo.exe를 실행합니다.

  3. Display Logged On User 단추를 클릭합니다. 그러면 현재 로그온한 사용자의 계정 이름이 응용 프로그램 창에 표시됩니다. 다음으로 Is Caller in Demo Role? 단추를 클릭합니다. "You ARE in RBSecurityDemoRole"이라는 메시지가 표시됩니다.

  4. 시작\관리 도구\구성 요소 서비스를 클릭하여 "COM+ 탐색기"라고도 하는 구성 요소 서비스 관리 도구를 시작합니다. COM+ 탐색기의 왼쪽 창에서 구성 요소 서비스\컴퓨터\내 컴퓨터\COM+ 응용 프로그램을 확장하여 RBSecDemoSvr COM+ 응용 프로그램을 찾습니다. 다음으로 RBSecDemoSvr 응용 프로그램을 마우스 오른쪽 단추로 클릭하고 "속성"을 선택합니다. 이렇게 하면 응용 프로그램에 대한 속성 대화 상자가 열립니다. "보안" 탭을 클릭합니다. 이 탭에 있는 정보는 ApplicationAccessControlAttribute에서 지정한 설정과 일치합니다. "Enforce access checks for this application" 확인란의 선택을 취소합니다.

    중요:

      이렇게 하면 응용 프로그램에 포함된 모든 구성 요소에 대해 COM+ 보안이 비활성화됩니다.

    확인을 클릭하여 속성 대화 상자를 닫습니다.

  5. RBSecDemo 클라이언트 응용 프로그램으로 돌아가서 Display Logged On User를 클릭합니다. 그러면 "Unknown caller (Security is not enabled)"라는 메시지가 표시됩니다. Is Caller In Demo Role?을 클릭합니다. 보안이 비활성화되면 IsCallerInRole에 대한 모든 호출에서 true가 반환되므로 클라이언트에서는 여전히 사용자가 RBSecurityDemoRole에 있다고 보고합니다.

  6. COM+ 탐색기로 돌아간 다음 응용 프로그램을 마우스 오른쪽 단추로 클릭하고 속성을 선택하여 RBSecDemoSvr 속성 페이지를 다시 호출합니다. 보안 탭을 클릭하고 이 응용 프로그램에 대한 액세스 검사 수행 확인란을 다시 선택합니다. 이렇게 하면 응용 프로그램에 대해 보안이 다시 활성화됩니다. 확인을 클릭하여 속성 대화 상자를 닫습니다.

  7. "RBSecDemoSvr\구성 요소"를 확장하여 Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject 구성 요소를 찾습니다. "Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject" 구성 요소를 마우스 오른쪽 단추로 클릭하고 팝업 메뉴에서 속성을 선택합니다.

  8. 보안 탭을 클릭합니다. 이 탭의 인증 설정은 샘플 코드에서 지정한 ComponentAccessControlAttribute에 해당합니다. 명시적으로 구성 요소에 연결한 역할로 "RBSecurityDemoRole"이라는 역할이 표시된 것을 볼 수 있습니다. 이 역할은 샘플 코드에서 SecurityRoleAttribute를 사용하여 생성되고 샘플 구성 요소에 바인딩되었습니다. 확인을 클릭하여 속성 대화 상자를 닫습니다.

  9. COM+ 탐색기에서 RBSecDemoSvr 응용 프로그램 아래에 있는 역할 폴더를 확장합니다. RBSecurityDemoRole이 있는 것을 볼 수 있습니다. RBSecurityDemoRole\Users 폴더를 확장합니다. 사용자 폴더에는 "Everyone"이라는 계정 하나만 표시됩니다. "Everyone"을 마우스 오른쪽 단추로 클릭하고 팝업 메뉴에서 삭제를 클릭합니다. 이후 표시되는 확인 대화 상자에서 삭제하도록 선택합니다. COM+에서는 역할과 관련된 보안 설정을 캐시하므로 이 변경 사항의 결과를 확인하려면 RBSecDemoSvr 응용 프로그램을 종료해야 합니다. COM+ 탐색기에서 응용 프로그램을 마우스 오른쪽 단추로 클릭하고 팝업 메뉴에서 종료를 클릭합니다.

  10. RBSecDemo 클라이언트 응용 프로그램으로 돌아갑니다. 두 단추 중 하나를 클릭하면 MessageBox에 "Access is denied"가 표시됩니다. 구성 요소의 RBSecurityDemoRole에 현재 호출자가 포함되어 있지 않기 때문에 개체를 생성할 때 액세스 거부 보안 예외가 throw된 것입니다.

샘플을 제거하려면

  1. MsBuild 도구를 실행한 디렉터리 또는 Visual Studio에서 .sln 파일을 시작한 디렉터리로 이동합니다.

  2. 선택한 프로그래밍 언어에 따라 msbuild RoleBasedSecurityVB.sln /t:Clean 또는 msbuild RoleBasedSecurityVB.sln /t:Clean을 실행합니다. 이렇게 하면 .NET 서비스 설치 도구(Regsvcs.exe)전역 어셈블리 캐시 도구(Gacutil.exe)가 /u 스위치를 사용하여 호출되어 COM+ 카탈로그 및 전역 어셈블리 캐시에서 샘플 파일이 제거됩니다.

요구 사항

플랫폼: Windows 2000, Windows XP, Windows Server 2003

.NET Framework 버전: 2.0

설명

샘플의 이진 생성 및 등록 단계에 대한 자세한 내용은 소스 코드의 주석을 참조하십시오.

이 샘플 응용 프로그램으로 검색할 수 있는 정보는 다음과 같습니다.

  • COM+ 보안을 사용 중인지 여부

  • 현재 호출자가 샘플에서 만든 보안 역할의 멤버인지 여부

  • 현재 호출자의 계정 이름

구성 요소 서비스 관리 도구에서 이 구성 요소는 Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject로 표시됩니다.

참고:

샘플을 실행하기 전에 전역 어셈블리 캐시 도구(Gacutil.exe)를 실행하여 RBSecDemoSvr.dll 어셈블리를 전역 어셈블리 캐시에 설치해야 합니다. Gacutil.exe는 SDK\<version>\Bin 디렉터리에 있습니다. 예를 들어, Visual Basic 버전에서는 C:\Documents and Settings\Your User Name\My Documents\Samples\Technologies\ComponentServices\RoleBasedSecurity\VB\bin 디렉터리로 이동한 다음 gacutil -i RBSecDemoSvr.dll을 입력합니다.

이 샘플에서는 응용 프로그램 또는 구성 요소 수준에서 보안을 활성하는 방법 및 특성을 통해 보안 역할을 만드는 방법도 보여 줍니다.

참고:

   .NET의 COM+ 보안 상호 운용성은 COM+ 1.0 보안 서비스를 사용하는 기존 응용 프로그램에 대한 Managed Extensions를 작성하려는 응용 프로그램 개발자를 위해 제공됩니다. .NET Framework에서는 고유의 역할 기반 보안을 제공합니다. 두 메커니즘은 서로 독립적이며 같은 응용 프로그램 내에서는 둘 중 하나만 사용해야 합니다.

참고 항목

참조

ApplicationAccessControlAttribute

ComponentAccessControlAttribute

ContextUtil

SecurityCallContext

SecurityRoleAttribute

ServicedComponent

System.ComponentModel

System.EnterpriseServices

기타 리소스

역할 기반 보안