共用方式為


HOW TO:使用 PrincipalPermissionAttribute 類別來限制存取

控制 Windows 網域電腦上資源的存取,是基本的安全性工作。例如,只有特定使用者能夠檢視機密資料 (如薪資資料)。本主題說明如何透過將使用者歸屬到預先定義的群組,以限制方法的存取。如需實用範例,請參閱Authorizing Access to Service Operations

這項工作包含兩個不同的程序。第一個程序是建立群組並填入使用者。第二個程序是套用 PrincipalPermissionAttribute 類別以指定群組。

建立 Windows 群組

  1. 開啟 [電腦管理] 主控台。

  2. 在左側面板中,按一下 [本機使用者和群組]。

  3. 以滑鼠右鍵按一下 [群組],然後按一下 [新增群組]。

  4. 在 [群組名稱] 方塊中輸入新群組的名稱。

  5. 在 [描述] 方塊中輸入新群組的描述。

  6. 按一下 [加入] 按鈕,將新成員加入至群組。

  7. 如果您將自己加入群組中,而且想要測試以下程式碼,則必須先登出電腦然後再登入,才能包含在該群組中。

要求使用者成員資格

  1. 開啟包含實作之服務合約程式碼的 Windows Communication Foundation (WCF) 程式碼檔案。如需 實作合約的詳細資訊,請參閱實作服務合約

  2. PrincipalPermissionAttribute 屬性 (Attribute) 套用至每一個必須限於特定群組的方法。將 Action 屬性設為 Demand,並將 Role 屬性設為群組名稱。例如:

    ms731200.note(zh-tw,VS.90).gif注意:
    如果您將 PrincipalPermissionAttribute 屬性套用至合約,則會擲回 SecurityException。您只能在方法層級套用此屬性。

使用憑證控制方法的存取

如果用戶端認證類型為憑證,您也可以使用 PrincipalPermissionAttribute 類別控制方法的存取。若要執行這項操作,您必須擁有憑證的主體和指紋。

若要檢查憑證的屬性,請參閱 HOW TO:使用 MMC 嵌入式管理單元來檢視憑證。若要尋找指紋值,請參閱 HOW TO:擷取憑證的指紋

使用憑證控制存取

  1. PrincipalPermissionAttribute 類別套用至您要限制存取的方法。

  2. 將屬性 (Attribute) 的動作設為 System.Security.Permissions.SecurityAction.Demand

  3. Name 屬性設為字串,包含主體名稱和憑證的指紋。使用分號和空格分隔這兩個值,如以下範例所示:

  4. PrincipalPermissionMode 屬性設為 UseAspNetRoles,如以下組態範例所示:

    <behaviors>
      <serviceBehaviors>
      <behavior name="SvcBehavior1">
      <serviceAuthorization principalPermissionMode="UseAspNetRoles" />
      </behavior>
      </serviceBehaviors>
    </behaviors>
    

    將這個值設為 UseAspNetRoles,表示 PrincipalPermissionAttributeName 屬性將用來執行字串比較。當憑證用來做為用戶端認證時,根據預設,WCF 會使用分號串連憑證一般名稱和指紋,以便為用戶端的主要身分識別建立唯一的值。將服務上的 UseAspNetRoles 設為 PrincipalPermissionMode 之後,這個主要身分識別值會與 Name 屬性值比較,以判斷使用者的存取權限。

    或者,當建立自我裝載服務時,依照以下程式碼所示,設定程式碼中的 PrincipalPermissionMode 屬性:

請參閱

參考

PrincipalPermissionAttribute
PrincipalPermissionAttribute
Demand
Role

概念

安全性概觀
實作服務合約

其他資源

Authorizing Access to Service Operations