다음을 통해 공유


Authorizing Access to Service Operations

이 샘플에서는 PrincipalPermissionAttribute 특성을 사용하여 서비스 작업에 대한 액세스 권한을 부여할 수 있도록 <serviceAuthorization> element를 사용하는 방법을 보여 줍니다. 이 샘플은 Getting Started 샘플 샘플을 기반으로 합니다. 서비스와 클라이언트는 wsHttpBinding Element를 사용하여 구성되었습니다. Security elementmode 특성은 Message로 설정되었고, clientCredentialTypeWindows로 설정되었습니다. PrincipalPermissionAttribute는 각 서비스 메서드에 적용되고 각 작업에 대한 액세스를 제한하는 데 사용됩니다. 호출자는 각 작업에 액세스하기 위해 Windows 관리자여야 합니다.

이 샘플에서 클라이언트는 콘솔 응용 프로그램(.exe)이고 서비스는 IIS(인터넷 정보 서비스)를 통해 호스팅됩니다.

ms752243.note(ko-kr,VS.100).gif참고:
이 샘플의 설치 절차 및 빌드 지침은 이 항목의 끝부분에 나와 있습니다.

서비스 구성 파일은 <serviceAuthorization> element를 사용하여 principalPermissionMode 특성을 설정합니다.

<behaviors>
  <serviceBehaviors>
    <behavior>
      ...
      <!-- The serviceAuthorization behavior sets the           principalPermissionMode to UseWindowsGroups.
           This puts a WindowsPrincipal on the current thread when a            service is invoked. -->
      <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
    </behavior>
  </serviceBehaviors>
</behaviors>

principalPermissionModeUseWindowsGroups로 설정하면 Windows 그룹 이름에 기초하여 PrincipalPermissionAttribute를 사용할 수 있게 됩니다.

다음 샘플 코드와 같이 PrincipalPermissionAttribute가 각 작업에 적용되어 호출자가 Windows 관리자 그룹의 일부여야 한다는 것을 요구합니다.

[PrincipalPermission(SecurityAction.Demand, 
                             Role = "Builtin\\Administrators")]
public double Add(double n1, double n2)
{
    double result = n1 + n2;
    return result;
}

샘플을 실행하면 작업 요청 및 응답이 클라이언트 콘솔 창에 표시됩니다. 클라이언트는 관리자 그룹의 일부인 계정으로 실행 중인 경우 각 작업과 통신할 수 있고, 그렇지 않은 경우 액세스가 거부됩니다. 권한 부여 오류를 테스트하려면 관리자 그룹의 일부가 아닌 계정으로 클라이언트를 실행합니다. 클라이언트를 종료하려면 콘솔 창에서 Enter 키를 누릅니다.

IErrorHandler를 구현하여 권한 부여 오류를 서비스에 알릴 수 있습니다. IErrorHandler 구현에 대한 자세한 내용은 Extending Control Over Error Handling and Reporting을 참조하십시오.

샘플을 설치, 빌드 및 실행하려면

  1. Windows Communication Foundation 샘플의 일회 설치 절차를 수행했는지 확인합니다.

  2. C# 또는 Visual Basic .NET 버전의 솔루션을 빌드하려면 Windows Communication Foundation 샘플 빌드의 지침을 따릅니다.

  3. 단일 컴퓨터 또는 다중 컴퓨터 구성에서 샘플을 실행하려면 Running the Windows Communication Foundation Samples의 지침을 따릅니다.