HOW TO:建立自訂用戶端身分識別驗證器
Windows Communication Foundation (WCF) 的「身分識別」(Identity) 功能可讓用戶端預先指定預期的服務身分識別。每當伺服器向用戶端驗證自身時,就會比對預期身分識別來檢查身分識別 (如需身分識別及其運作方式的說明,請參閱服務身分識別和驗證)。
必要時,可使用自訂身分識別驗證器來自訂驗證。例如,您可以執行其他服務身分識別驗證檢查。在這個範例中,自訂身分識別驗證器會檢查從伺服器所傳回的 X.509 憑證中的其他宣告。如需範例應用程式,請參閱Identity
若要擴充 EndpointIdentity 類別
定義衍生自 EndpointIdentity 類別的新類別。這個範例會將擴充功能命名為
OrgEndpointIdentity
。加入私用成員與擴充 IdentityVerifier 類別將會使用的屬性,對服務所傳回安全性權杖中的宣告執行身分識別檢查。這個範例會定義一個屬性:
OrganizationClaim
屬性。
若要擴充 IdentityVerifier 類別
定義衍生自 IdentityVerifier 的新類別。這個範例會將擴充功能命名為
CustomIdentityVerifier
。覆寫 CheckAccess 方法。這個方法會判斷身分識別檢查是成功還是失敗。
CheckAccess 方法有兩個參數。第一個是 EndpointIdentity 類別的執行個體。第二個是 AuthorizationContext 類別的執行個體。
在方法實作中,檢查 AuthorizationContext 類別的 ClaimSets 屬性傳回的宣告集合,並執行必要的驗證檢查。這個範例會先尋找 "Distinguished Name" 型別的任何宣告,然後比較名稱與 EndpointIdentity 的擴充功能 (
OrgEndpointIdentity
)。
若要實作 TryGetIdentity 方法
實作 TryGetIdentity 方法,可判斷 EndpointIdentity 類別的執行個體是否可由用戶端傳回。WCF 基礎結構會先呼叫 TryGetIdentity 方法的實作,從訊息擷取服務的身分識別。接著,基礎結構會使用所傳回的 EndpointIdentity 和 AuthorizationContext 來呼叫 CheckAccess 實作。
在 TryGetIdentity 方法中,放入下列程式碼:
若要實作自訂繫結及設定自訂 IdentityVerifier
建立會傳回 Binding 物件的方法。這個範例會先建立 WSHttpBinding 類別的執行個體,並將其安全性模式設定為 Message 及其 ClientCredentialType 設定為 None。
從集合中傳回 SecurityBindingElement 並將其轉換為 SymmetricSecurityBindingElement 變數。
將 LocalClientSecuritySettings 類別的 IdentityVerifier 屬性設定為先前新建立的
CustomIdentityVerifier
類別執行個體。所傳回的自訂繫結會用來建立用戶端和類別的執行個體。然後,用戶端就可以對服務執行自訂身分識別驗證檢查,如下列程式碼所示。
範例
下列範例會示範 IdentityVerifier 類別的完整實作。
下列範例會示範 EndpointIdentity 類別的完整實作。
請參閱
參考
ServiceAuthorizationManager
EndpointIdentity
IdentityVerifier
其他資源
Identity Sample
How To: Create a Custom AuthorizationManager on a Service
Authorization Policy Sample