HOW TO:使用 PrincipalPermissionAttribute 類別來限制存取
控制 Windows 網域電腦上資源的存取,是基本的安全性工作。例如,只有特定使用者能夠檢視機密資料 (如薪資資料)。本主題說明如何透過將使用者歸屬到預先定義的群組,以限制方法的存取。如需實用範例,請參閱Authorizing Access to Service Operations。
這項工作包含兩個不同的程序。第一個程序是建立群組並填入使用者。第二個程序是套用 PrincipalPermissionAttribute 類別以指定群組。
建立 Windows 群組
開啟 [電腦管理] 主控台。
在左側面板中,按一下 [本機使用者和群組]。
以滑鼠右鍵按一下 [群組],然後按一下 [新增群組]。
在 [群組名稱] 方塊中輸入新群組的名稱。
在 [描述] 方塊中輸入新群組的描述。
按一下 [加入] 按鈕,將新成員加入至群組。
如果您將自己加入群組中,而且想要測試以下程式碼,則必須先登出電腦然後再登入,才能包含在該群組中。
要求使用者成員資格
開啟包含實作之服務合約程式碼的 Windows Communication Foundation (WCF) 程式碼檔案。如需 實作合約的詳細資訊,請參閱實作服務合約。
將 PrincipalPermissionAttribute 屬性 (Attribute) 套用至每一個必須限於特定群組的方法。將 Action 屬性設為 Demand,並將 Role 屬性設為群組名稱。例如:
注意: 如果您將 PrincipalPermissionAttribute 屬性套用至合約,則會擲回 SecurityException。您只能在方法層級套用此屬性。
使用憑證控制方法的存取
如果用戶端認證類型為憑證,您也可以使用 PrincipalPermissionAttribute 類別控制方法的存取。若要執行這項操作,您必須擁有憑證的主體和指紋。
若要檢查憑證的屬性,請參閱 HOW TO:使用 MMC 嵌入式管理單元來檢視憑證。若要尋找指紋值,請參閱 HOW TO:擷取憑證的指紋。
使用憑證控制存取
將 PrincipalPermissionAttribute 類別套用至您要限制存取的方法。
將屬性 (Attribute) 的動作設為 System.Security.Permissions.SecurityAction.Demand。
將 Name 屬性設為字串,包含主體名稱和憑證的指紋。使用分號和空格分隔這兩個值,如以下範例所示:
將 PrincipalPermissionMode 屬性設為 UseAspNetRoles,如以下組態範例所示:
<behaviors> <serviceBehaviors> <behavior name="SvcBehavior1"> <serviceAuthorization principalPermissionMode="UseAspNetRoles" /> </behavior> </serviceBehaviors> </behaviors>
將這個值設為
UseAspNetRoles
,表示 PrincipalPermissionAttribute 的 Name 屬性將用來執行字串比較。當憑證用來做為用戶端認證時,根據預設,WCF 會使用分號串連憑證一般名稱和指紋,以便為用戶端的主要身分識別建立唯一的值。將服務上的UseAspNetRoles
設為PrincipalPermissionMode
之後,這個主要身分識別值會與 Name 屬性值比較,以判斷使用者的存取權限。或者,當建立自我裝載服務時,依照以下程式碼所示,設定程式碼中的 PrincipalPermissionMode 屬性:
請參閱
參考
PrincipalPermissionAttribute
PrincipalPermissionAttribute
Demand
Role