Megosztás a következőn keresztül:


Ú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 ElementsCustomBinding 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

  1. Hozzon létre egy példányt az BindingElementCollection osztályból a névvel outputBec.

  2. 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.

  3. Adja hozzá a SymmetricSecurityBindingElement gyűjteményhez (outputBec) az Add osztály metódusának Collection<T> meghívásával BindingElement .

  4. 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.

  5. 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.

  6. 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.

  7. 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

Kapcsolódó információk