共用方式為


SecureConversationServiceCredential.SecurityStateEncoder 屬性

定義

取得或設定自訂的 SecurityStateEncoder,此編碼器會用於編碼和解碼 Cookie 序列化。

public:
 property System::ServiceModel::Security::SecurityStateEncoder ^ SecurityStateEncoder { System::ServiceModel::Security::SecurityStateEncoder ^ get(); void set(System::ServiceModel::Security::SecurityStateEncoder ^ value); };
public System.ServiceModel.Security.SecurityStateEncoder SecurityStateEncoder { get; set; }
member this.SecurityStateEncoder : System.ServiceModel.Security.SecurityStateEncoder with get, set
Public Property SecurityStateEncoder As SecurityStateEncoder

屬性值

SecurityStateEncoder 物件,它是自訂的 DataProtectionSecurityStateEncoder

範例

下列程式碼將示範如何設定這個屬性。

static void Configure(ServiceHost serviceHost)
{
    /*
     * There are certain settings that cannot be configured via app.config.
     * The security state encoder is one of them.
     * Plug in a SecurityStateEncoder that uses the configured certificate
     * to protect the security context token state.
     *
     * Note: You don't need a security state encoder for cookie mode.  This was added to the
     * sample to illustrate how you would plug in a custom security state encoder should
     * your scenario require one.
     * */
    serviceHost.Credentials.SecureConversationAuthentication.SecurityStateEncoder =
            new CertificateSecurityStateEncoder(serviceHost.Credentials.ServiceCertificate.Certificate);

備註

在「Cookie 模式」中,服務會以用戶端之 Cookie 的形式來向用戶端發出安全性內容權杖 (SCT),讓用戶端不必維護任何安全性狀態。 用戶端會透過要求訊息來傳回該 Cookie,以便服務知道如何取消保護及確認該要求訊息。 由於 SCT 經常是在非安全網路上進行傳輸,因此它必須受到保護。

根據預設,Windows Communication Foundation (WCF) 會使用 DataProtectionSecurityStateEncoder 類別,使用資料保護 API (DPAPI) 來保護 Cookie。 如果要讓 DPAPI 可在 Web 伺服陣列環境中運作,所有的後端服務都必須由相同網域使用者帳戶執行。 換句話說,如果服務屬於 Web 主控,則網際網路資訊服務 (IIS) 背景工作處理序必須設定成由網域使用者執行。

這個屬性可讓您使用自訂的 SecurityStateEncoder 來加密和解密 Cookie,而不要依賴 DPAPI。

適用於