다음을 통해 공유


서비스 작업에 대한 액세스 권한 부여

이 샘플은 serviceAuthorization<을> 통해 PrincipalPermissionAttribute 특성을 사용하여 서비스 작업에 대한 액세스를 승인하는 방법을 보여 줍니다. 이 샘플은 시작하기 샘플을 기반으로 합니다. 서비스와 클라이언트는 wsHttpBinding<을> 사용하여 구성됩니다. mode<보안> 특성이 Message로 설정되었으며, clientCredentialTypeWindows로 설정되었습니다. 각 PrincipalPermissionAttribute 서비스 메서드에 적용되며 각 작업에 대한 액세스를 제한하는 데 사용됩니다. 호출자는 각 작업에 액세스하려면 Windows 관리자여야 합니다.

이 샘플에서 클라이언트는 콘솔 애플리케이션(.exe)이며 서비스는 IIS(인터넷 정보 서비스)에서 호스팅됩니다.

비고

이 샘플에 대한 설치 절차 및 빌드 지침은 이 항목의 끝에 있습니다.

서비스 구성 파일은 serviceAuthorization<을 사용하여> 특성을 설정합니다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.

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

  1. Windows Communication Foundation 샘플 에 대한One-Time 설정 절차를 수행했는지 확인합니다.

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

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