共用方式為


授權存取服務操作

此範例示範如何使用 <serviceAuthorization> 來啟用 PrincipalPermissionAttribute 屬性來授權服務作業的存取權。 此範例是以 用戶入門 範例為基礎。 服務與用戶端是使用 <wsHttpBinding> 來設定。 安全性mode<的> 屬性已設定為 Message ,且clientCredentialType已設定為 WindowsPrincipalPermissionAttribute會套用至每個服務方法,並用來限制每個作業的存取。 呼叫端必須是 Windows 系統管理員,才能存取每個作業。

在此範例中,用戶端是控制台應用程式(.exe),而服務是由 Internet Information Services (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>

principalPermissionMode設定為 UseWindowsGroups ,即可根據 Windows 群組名來使用 PrincipalPermissionAttribute

PrincipalPermissionAttribute會套用至每個作業,以要求呼叫端成為 Windows 系統管理員群組的一部分,如下列範例程式代碼所示。

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

當您執行範例時,作業要求和回應會顯示在用戶端控制台視窗中。 如果客戶端是在屬於 Administrators 群組的帳戶下執行,它就會成功與每個操作進行通信;否則,存取將被拒絕。 若要實驗授權失敗,請在不屬於 Administrators 群組的帳戶下執行用戶端。 在主控台視窗中按 ENTER 鍵以關閉用戶端。

可透過實作IErrorHandler來通知服務授權失敗。 如需執行的相關資訊,請參閱IErrorHandler

要設定、建置和執行範例,請執行以下步驟:

  1. 請確定您已針對 Windows Communication Foundation 範例 執行One-Time 安裝程式。

  2. 若要建置解決方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例 中的指示。

  3. 若要在單一或跨計算機組態中執行範例,請遵循 執行 Windows Communication Foundation 範例中的指示。