Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
Výstraha
SecurityBindingElement nepodporuje tvar kanálu IDuplexSessionChannel, který je výchozím tvarem kanálu používaným přenosem TCP, když je TransferMode nastaven na hodnotu Buffered. Musíte nastavit TransferMode na Streamed, abyste mohli SecurityBindingElement použít v tomto scénáři.
Vytvoření vlastní vazby
Ve frameworku 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.
Naopak, pokud chcete vytvořit vlastní vazbu, vytvoří se a nakonfigurují prvky vazby a z těchto prvků vazby se vytvoří CustomBinding.
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ý duplex, Jednosměrný, Zabezpečení přenosu, 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í, pokud je zajištěno zabezpečení na úrovni přenosu:
Požadované prvky vazby
Existuje velký počet možných prvků vazby, které lze kombinovat do jednoho celku. 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 | |||
| protokol 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 | ||
| Protokol tcp | SecurityBindingElement | SecurityBindingElement | SymmetricSecurityBindingElement (režim ověřování = SecureConversation) | |
| TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement | ||
| Smíšený (transport s autentizačními údaji zprávy) | Https | TransportSecurityBindingElement | TransportSecurityBindingElement | |
| OneWayBindingElement | ||||
| HttpsTransportBindingElement | HttpsTransportBindingElement | |||
| protokol 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.
Procedures
Vytvoření vlastní vazby, která používá SymmetricSecurityBindingElement
Vytvořte instanci BindingElementCollection třídy s názvem
outputBec.Volání statické metody
M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true), která vrací instanci SymmetricSecurityBindingElement třídy.Přidejte SymmetricSecurityBindingElement do kolekce (
outputBec) voláním metodyAddobjektu Collection<T> třídy BindingElement.Vytvořte instanci TextMessageEncodingBindingElement třídy a přidejte ji do kolekce (
outputBec). Určuje kódování používané vazbou.Vytvořte HttpTransportBindingElement a přidejte ho do kolekce (
outputBec). Určuje, že vazba používá přenos HTTP.Vytvořte novou vlastní vazbu vytvořením instance CustomBinding třídy a předáním kolekce
outputBeckonstruktoru.Výsledná vlastní vazba sdílí mnoho charakteristik se standardem 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í dvě lze ovládat pomocí nastavení standardní vazby.
Příklad
Description
Následující příklad poskytuje úplnou funkci pro vytvoření vlastní vazby, která používá SymmetricSecurityBindingElement.
Code
// 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