您可以使用 Windows Communication Foundation (WCF) 以數種方式控制存取權。 本主題簡短討論各種機制,並提供何時使用每個機制的建議:它旨在協助您選取要使用的正確機制。 存取技術會依複雜度順序列出。 最簡單的是 PrincipalPermissionAttribute;最複雜的是身分識別模型。
除了這些機制之外,使用 WCF 的模擬和委派也會在 委派和模擬中說明。
主要權限屬性
PrincipalPermissionAttribute用來限制服務方法的存取。 當屬性套用至方法時,可以用來要求 Windows 群組或 ASP.NET 角色中的特定呼叫端身分識別或成員資格。 如果用戶端是使用 X.509 憑證進行驗證,則會獲得由主體名稱加上憑證指紋所組成的主要身分識別。
使用 PrincipalPermissionAttribute 來控制於服務執行所在的計算機上的資源存取,並且確保服務的使用者始終屬於服務執行所在的相同 Windows 網域。 您可以輕鬆地建立具有指定存取層級的 Windows 群組(例如無、只讀或讀取和寫入)。
如需使用 屬性的詳細資訊,請參閱 如何:使用 PrincipalPermissionAttribute 類別限制存取。 如需識別的詳細資訊,請參閱服務識別與驗證。
ASP.NET 成員資格提供者
ASP.NET 的一個功能是會員提供者。 雖然成員資格提供者在技術上不是訪問控制機制,但它還是允許藉由限制可存取服務端點的可能身分識別集來控制服務的存取。 成員資格功能包含可填入使用者名稱/密碼組合的資料庫,讓網站的用戶能夠與網站建立帳戶。 若要存取使用成員資格提供者的服務,用戶必須使用其使用者名稱和密碼登入。
備註
您必須先使用 ASP.NET 功能填入資料庫,WCF 服務才能將它用於授權用途。
如果您已經有現有 ASP.NET 網站的成員資格資料庫,而且您想要讓相同的用戶能夠使用您的服務,且授權具有相同的使用者名稱和密碼,您也可以使用成員資格功能。
如需在 WCF 服務中使用成員資格功能的詳細資訊,請參閱 如何:使用 ASP.NET 成員資格提供者。
ASP.NET 角色提供者
ASP.NET 的另一項功能是能夠使用角色管理授權。 ASP.NET 角色提供者可讓開發人員建立使用者的角色,並將每個使用者指派給角色或角色。 如同成員資格提供者,角色和指派會儲存在資料庫中,而且可以使用特定實作 ASP.NET 角色提供者所提供的工具來填入。 如同成員資格功能,WCF 開發人員可以使用資料庫中的資訊,依角色授權服務使用者。 例如,它們可以將角色提供者與上述訪問控制機制搭配使用 PrincipalPermissionAttribute 。
如果您有現有的 ASP.NET 角色提供者資料庫,而且想要在 WCF 服務中使用相同的規則和使用者指派集,您也可以使用 ASP.NET 角色提供者。
如需使用角色提供者功能的詳細資訊,請參閱 如何:搭配服務使用 ASP.NET 角色提供者。
授權管理員
另一項功能結合了授權管理員 (AzMan) 與 ASP.NET 角色提供者,以授權用戶端。 ASP.NET 裝載 Web 服務時,AzMan 可以整合至應用程式,以便透過 AzMan 完成服務授權。 ASP.NET 角色管理員提供 API,可讓您管理應用程式角色、新增和移除角色,以及檢查角色成員資格,但不允許您查詢使用者是否已獲授權執行具名工作或作業。 AzMan 可讓您定義個別作業,並將其合併為工作。 使用 AZMan,除了角色檢查之外,您也可以檢查使用者是否可以執行工作。 角色指派和工作授權可以在應用程式外部設定,或在應用程式內以程式設計方式執行。 AzMan 管理的 Microsoft 管理主控台(MMC)可即時啟用,讓管理員能更改角色在執行時可執行的任務,並管理每位使用者的角色成員資格。
如果您已經能夠存取現有的 AzMan 安裝,而且想要使用 AzMan/角色提供者組合的功能來授權您的服務使用者,您也可以使用 AzMan 和 ASP.NET 角色提供者。
如需 AzMan 和 ASP.NET 角色提供者的詳細資訊,請參閱 如何:搭配 ASP.NET 2.0 使用授權管理員 (AzMan)。 如需使用 AzMan 和 WCF 服務角色提供者的詳細資訊,請參閱 如何:搭配服務使用 ASP.NET 授權管理員角色提供者。
身分識別模型
身分識別模型是一組 API,可讓您管理宣告和原則來授權用戶端。 使用身份識別模型,您可以檢查呼叫者用來向服務驗證自己身份的憑證中所包含的每個宣告,並將這些宣告與服務政策進行比較,根據比較結果授予或拒絕存取權。
如果您需要精細的控制,以及授與存取權之前設定特定準則的能力,請使用身分識別模型。 例如,使用 PrincipalPermissionAttribute時,準則就是使用者身分識別已驗證並屬於特定角色。 相反地,使用身分識別模型,您可以建立原則,指出用戶必須超過18歲,並擁有有效的駕駛執照,才能檢視檔。
您可以從身分識別模型宣告型訪問控制中獲益的一個範例,就是在發行的令牌案例中使用同盟認證。 如需同盟和已發行令牌的詳細資訊,請參閱 同盟和發行的令牌。
如需身分識別模型的詳細資訊,請參閱 使用身分識別模型管理宣告和授權。