Sdílet prostřednictvím


Postupy: Vytvoření vlastní vazby pomocí elementu SecurityBindingElement

Windows Communication Foundation (WCF) obsahuje několik systémových vazeb, které lze konfigurovat, ale neposkytuje úplnou flexibilitu při konfiguraci všech možností zabezpečení, které WCF podporuje. Toto téma ukazuje, jak vytvořit vlastní vazbu přímo z jednotlivých prvků vazby a zvýrazní některá nastavení zabezpečení, která lze zadat při vytváření takové vazby. Další informace o vytváření vlastních vazeb naleznete v tématu Rozšíření vazeb.

Upozorňující

SecurityBindingElement nepodporuje IDuplexSessionChannel obrazec kanálu, což je výchozí obrazec kanálu, který používá přenos TCP, pokud TransferMode je nastaven na Bufferedhodnotu . Abyste mohli tento scénář použítSecurityBindingElement, musíte TransferMode nastavit na Streamed hodnotu.

Vytvoření vlastní vazby

Ve službě WCF jsou všechny vazby tvořeny prvky vazby. Každý element vazby je odvozen od BindingElement třídy. U standardních systémových vazeb jsou prvky vazby vytvořeny a nakonfigurovány pro vás, i když můžete přizpůsobit některá nastavení vlastnosti.

Pokud chcete vytvořit vlastní vazbu, vytvoří se a nakonfigurují prvky vazby a vytvoří se CustomBinding z elementů vazby.

Uděláte to tak, že přidáte jednotlivé prvky vazby do kolekce reprezentované instancí BindingElementCollection třídy a pak nastavíte Elements vlastnost rovnající se danému CustomBinding objektu. Prvky vazby musíte přidat v následujícím pořadí: tok transakcí, spolehlivá relace, zabezpečení, složený duplexní, jednosměrný, zabezpečení streamu, kódování zpráv a přenos. Všimněte si, že v každé vazbě nejsou vyžadovány všechny uvedené prvky vazby.

SecurityBindingElement

Tři prvky vazby se vztahují k zabezpečení na úrovni zpráv, z nichž všechny jsou odvozeny z SecurityBindingElement třídy. Tři jsou TransportSecurityBindingElement, SymmetricSecurityBindingElementa AsymmetricSecurityBindingElement. Slouží TransportSecurityBindingElement k zajištění zabezpečení smíšeného režimu. Další dva prvky se používají, když vrstva zpráv poskytuje zabezpečení.

Další třídy se používají při zajištění zabezpečení na úrovni přenosu:

Požadované prvky vazby

Existuje velký počet možných vazeb prvků, které lze kombinovat do vazby. Ne všechny tyto kombinace jsou platné. Tato část popisuje požadované prvky, které musí být přítomny v vazbě zabezpečení.

Platné vazby zabezpečení závisí na mnoha faktorech, včetně následujících:

  • Režim zabezpečení.

  • Přenosový protokol.

  • Vzor výměny zpráv (MEP) zadaný ve smlouvě.

Následující tabulka ukazuje platné konfigurace zásobníku elementů vazby pro každou kombinaci předchozích faktorů. Mějte na paměti, že tyto požadavky jsou minimální. Do vazby můžete přidat další prvky vazby, například prvky vazby kódování zpráv, elementy vazby transakcí a další prvky vazby.

Režim zabezpečení Přeprava Model výměny zpráv kontraktu Model výměny zpráv kontraktu Model výměny zpráv kontraktu
Datagram Request Reply Duplex
Přeprava Https
OneWayBindingElement
HttpsTransportBindingElement HttpsTransportBindingElement
TCP
OneWayBindingElement
SSL nebo Windows StreamSecurityBindingElement SSL nebo Windows StreamSecurityBindingElement SSL nebo Windows StreamSecurityBindingElement
TcpTransportBindingElement TcpTransportBindingElement TcpTransportBindingElement
Zpráva HTTP SymmetricSecurityBindingElement SymmetricSecurityBindingElement SymmetricSecurityBindingElement (režim ověřování = SecureConversation)
CompositeDuplexBindingElement
OneWayBindingElement OneWayBindingElement
HttpTransportBindingElement HttpTransportBindingElement HttpTransportBindingElement
Tcp SecurityBindingElement SecurityBindingElement SymmetricSecurityBindingElement (režim ověřování = SecureConversation)
TcpTransportBindingElement TcpTransportBindingElement TcpTransportBindingElement
Smíšený (přenos s přihlašovacími údaji zprávy) Https TransportSecurityBindingElement TransportSecurityBindingElement
OneWayBindingElement
HttpsTransportBindingElement HttpsTransportBindingElement
TCP TransportSecurityBindingElement SymmetricSecurityBindingElement (režim ověřování = SecureConversation) SymmetricSecurityBindingElement (režim ověřování = SecureConversation)
OneWayBindingElement
SSL nebo Windows StreamSecurityBindingElement SSL nebo Windows StreamSecurityBindingElement SSL nebo Windows StreamSecurityBindingElement
TcpTransportBindingElement TcpTransportBindingElement TcpTransportBindingElement

Všimněte si, že pro SecurityBindingElements existuje mnoho konfigurovatelných nastavení. Další informace naleznete v tématu Režimy ověřování SecurityBindingElement.

Další informace naleznete v tématu Zabezpečené konverzace a zabezpečené relace.

Procedury

Vytvoření vlastní vazby, která používá SymmetricSecurityBindingElement

  1. Vytvořte instanci BindingElementCollection třídy s názvem outputBec.

  2. Volání statické metody M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true), která vrací instanci SymmetricSecurityBindingElement třídy.

  3. SymmetricSecurityBindingElement Přidejte do kolekce (outputBec) voláním Add metody Collection<T>BindingElement třídy.

  4. Vytvořte instanci TextMessageEncodingBindingElement třídy a přidejte ji do kolekce (outputBec). Určuje kódování používané vazbou.

  5. Vytvořte HttpTransportBindingElement a přidejte ho do kolekce (outputBec). Určuje, že vazba používá přenos HTTP.

  6. Vytvořte novou vlastní vazbu vytvořením instance CustomBinding třídy a předáním kolekce outputBec konstruktoru.

  7. Výsledná vlastní vazba sdílí mnoho stejných charakteristik jako standard WSHttpBinding. Určuje zabezpečení na úrovni zpráv a přihlašovací údaje systému Windows, ale zakazuje zabezpečené relace, vyžaduje, aby přihlašovací údaje služby byly zadány mimo pásmo a nešifrují podpisy. Poslední lze řídit pouze nastavením MessageProtectionOrder vlastnosti, jak je znázorněno v kroku 4. Ostatní dva se dají ovládat pomocí nastavení standardní vazby.

Příklad

Popis

Následující příklad poskytuje úplnou funkci pro vytvoření vlastní vazby, která používá SymmetricSecurityBindingElement.

Kód

// Create an empty CustomBinding to populate
CustomBinding binding = new CustomBinding();
// Create a SymmetricSecurityBindingElement.
SymmetricSecurityBindingElement ssbe =
    SecurityBindingElement.CreateSspiNegotiationBindingElement(true);
// Add the SymmetricSecurityBindingElement to the BindingElementCollection.
binding.Elements.Add(ssbe);
binding.Elements.Add(new TextMessageEncodingBindingElement());
binding.Elements.Add(new HttpTransportBindingElement());
return new CustomBinding(binding);
Public Shared Function CreateCustomBinding() As Binding
    ' Create an empty Custom Binding to populate, 
    Dim binding As New CustomBinding()
    ' Create a SymmetricSecurityBindingElement.
    Dim ssbe As SymmetricSecurityBindingElement
    ssbe = SecurityBindingElement.CreateSspiNegotiationBindingElement(True)
    ' Add the SymmetricSecurityBindingElement to the BindingElementCollection.
    binding.Elements.Add(ssbe)
    binding.Elements.Add(New TextMessageEncodingBindingElement())
    binding.Elements.Add(New HttpTransportBindingElement())
    Return New CustomBinding(binding)

End Function

Viz také