Útmutató: Egyéni kötés létrehozása a SecurityBindingElement használatával
A Windows Communication Foundation (WCF) számos rendszer által biztosított kötést tartalmaz, amelyek konfigurálhatók, de nem biztosítanak teljes rugalmasságot a WCF által támogatott biztonsági beállítások konfigurálásakor. Ez a témakör bemutatja, hogyan hozhat létre egyéni kötést közvetlenül az egyes kötéselemekből, és kiemeli az ilyen kötések létrehozásakor megadható biztonsági beállítások némelyikét. További információ az egyéni kötések létrehozásáról: Kötések kiterjesztése.
Figyelmeztetés
SecurityBindingElement nem támogatja a IDuplexSessionChannel csatornaalakzatot, amely a TCP-átvitel által használt alapértelmezett csatornaalakzat, ha TransferMode a beállítás értéke Buffered. Ebben a forgatókönyvben a használathoz SecurityBindingElement be kell állítania a beállítást.TransferModeStreamed
Egyéni kötés létrehozása
A WCF-ben minden kötés kötési elemekből áll. Minden kötéselem az BindingElement osztályból származik. A standard rendszer által biztosított kötések esetében a kötéselemek létrejönnek és konfigurálhatók Önnek, bár a tulajdonságbeállítások némelyikét testre szabhatja.
Ezzel szemben egyéni kötés létrehozásához a kötéselemek létrejönnek és konfigurálódnak, és a kötéselemekből létrejön egy CustomBinding .
Ehhez hozzáadja az egyes kötési elemeket az osztály egy példánya BindingElementCollection által képviselt gyűjteményhez, majd beállítja az Elements
CustomBinding
objektummal egyenlő tulajdonságot. A kötési elemeket a következő sorrendben kell hozzáadnia: Transaction Flow, Reliable Session, Security, Composite Duplex, One-way, Stream Security, Message Encoding és Transport. Vegye figyelembe, hogy nem minden kötéshez szükséges a felsorolt kötési elem.
SecurityBindingElement
Három kötési elem kapcsolódik az üzenetszintű biztonsághoz, amelyek mindegyike az SecurityBindingElement osztályból származik. A három az TransportSecurityBindingElement, SymmetricSecurityBindingElementés AsymmetricSecurityBindingElement. A TransportSecurityBindingElement vegyes módú biztonság biztosítására szolgál. A másik két elem akkor használatos, ha az üzenetréteg biztonságot nyújt.
A szállítási szintű biztonság biztosításához további osztályok használhatók:
Kötelező kötési elemek
Számos lehetséges kötési elem kombinálható kötéssel. Nem minden kombináció érvényes. Ez a szakasz azokat a szükséges elemeket ismerteti, amelyeknek szerepelnie kell egy biztonsági kötésben.
Az érvényes biztonsági kötések számos tényezőtől függenek, többek között az alábbiaktól:
Biztonsági mód.
Átviteli protokoll.
A szerződésben megadott üzenetváltási minta (MEP).
Az alábbi táblázat az előző tényezők minden kombinációjához érvényes kötéselem-veremkonfigurációkat mutatja be. Vegye figyelembe, hogy ezek minimális követelmények. A kötéshez további kötési elemeket is hozzáadhat, például üzenetkódoló kötési elemeket, tranzakciókötési elemeket és egyéb kötéselemeket.
Biztonsági mód | Átvitel | Szerződés üzenetváltási mintája | Szerződés üzenetváltási mintája | Szerződés üzenetváltási mintája |
---|---|---|---|---|
Datagram |
Request Reply |
Duplex |
||
Átvitel | Https | |||
OneWayBindingElement | ||||
HttpsTransportBindingElement | HttpsTransportBindingElement | |||
TCP | ||||
OneWayBindingElement | ||||
SSL vagy Windows StreamSecurityBindingElement | SSL vagy Windows StreamSecurityBindingElement | SSL vagy Windows StreamSecurityBindingElement | ||
TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement | ||
Üzenet | Http | SymmetricSecurityBindingElement | SymmetricSecurityBindingElement | SymmetricSecurityBindingElement (hitelesítési mód = SecureConversation) |
CompositeDuplexBindingElement | ||||
OneWayBindingElement | OneWayBindingElement | |||
HttpTransportBindingElement | HttpTransportBindingElement | HttpTransportBindingElement | ||
Tcp | SecurityBindingElement | SecurityBindingElement | SymmetricSecurityBindingElement (hitelesítési mód = SecureConversation) | |
TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement | ||
Vegyes (átvitel üzenet hitelesítő adatokkal) | Https | TransportSecurityBindingElement | TransportSecurityBindingElement | |
OneWayBindingElement | ||||
HttpsTransportBindingElement | HttpsTransportBindingElement | |||
TCP | TransportSecurityBindingElement | SymmetricSecurityBindingElement (hitelesítési mód = SecureConversation) | SymmetricSecurityBindingElement (hitelesítési mód = SecureConversation) | |
OneWayBindingElement | ||||
SSL vagy Windows StreamSecurityBindingElement | SSL vagy Windows StreamSecurityBindingElement | SSL vagy Windows StreamSecurityBindingElement | ||
TcpTransportBindingElement | TcpTransportBindingElement | TcpTransportBindingElement |
Vegye figyelembe, hogy a SecurityBindingElements számos konfigurálható beállítással érhető el. További információ: SecurityBindingElement Hitelesítési módok.
További információ: Biztonságos beszélgetések és biztonságos munkamenetek.
Eljárások
SymmetricSecurityBindingElementt használó egyéni kötés létrehozása
Hozzon létre egy példányt az BindingElementCollection osztályból a névvel
outputBec
.Hívja meg a statikus metódust
M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true)
, amely az osztály egy példányát SymmetricSecurityBindingElement adja vissza.Adja hozzá a SymmetricSecurityBindingElement gyűjteményhez (
outputBec
) azAdd
osztály metódusának Collection<T> meghívásával BindingElement .Hozza létre az osztály egy példányát TextMessageEncodingBindingElement , és adja hozzá a gyűjteményhez (
outputBec
). Ez a kötés által használt kódolást adja meg.Hozzon létre és HttpTransportBindingElement adja hozzá a gyűjteményhez (
outputBec
). Ez azt határozza meg, hogy a kötés a HTTP-átvitelt használja.Hozzon létre egy új egyéni kötést az CustomBinding osztály egy példányának létrehozásával, és adja át a gyűjteményt
outputBec
a konstruktornak.Az eredményként kapott egyéni kötés számos olyan jellemzővel rendelkezik, mint a standard WSHttpBinding. Megadja az üzenetszintű biztonságot és a Windows hitelesítő adatait, de letiltja a biztonságos munkameneteket, megköveteli a szolgáltatás hitelesítő adatainak sávon kívüli megadását, és nem titkosítja az aláírásokat. Az utolsó csak a tulajdonság beállításával vezérelhető a MessageProtectionOrder 4. lépésben látható módon. A másik kettő a standard kötés beállításaival vezérelhető.
Példa
Leírás
Az alábbi példa egy teljes függvényt biztosít egy egyéni kötés létrehozásához, amely egy 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