Dela via


Anvisningar: Skapa en anpassad bindning med SecurityBindingElement

Windows Communication Foundation (WCF) innehåller flera systembaserade bindningar som kan konfigureras men som inte ger fullständig flexibilitet när du konfigurerar alla säkerhetsalternativ som WCF stöder. Det här avsnittet visar hur du skapar en anpassad bindning direkt från enskilda bindningselement och visar några av de säkerhetsinställningar som kan anges när du skapar en sådan bindning. Mer information om hur du skapar anpassade bindningar finns i Utöka bindningar.

Varning

SecurityBindingElement stöder inte kanalformen IDuplexSessionChannel , som är standardkanalformen som används av TCP-transporten när TransferMode den är inställd på Buffered. Du måste ange TransferMode till Streamed för att kunna använda SecurityBindingElement i det här scenariot.

Skapa en anpassad bindning

I WCF består alla bindningar av bindningselement. Varje bindningselement härleds från BindingElement klassen. För standardbindningar som tillhandahålls av systemet skapas och konfigureras bindningselementen åt dig, även om du kan anpassa vissa av egenskapsinställningarna.

För att skapa en anpassad bindning skapas och konfigureras däremot bindningselement och en CustomBinding skapas från bindningselementen.

Det gör du genom att lägga till de enskilda bindningselementen i en samling som representeras av en instans av BindingElementCollection klassen och sedan ange Elements egenskapen CustomBinding lika med objektet. Du måste lägga till bindningselementen i följande ordning: Transaktionsflöde, Tillförlitlig session, säkerhet, sammansatt duplex, enkelriktad, Stream Security, Meddelandekodning och Transport. Observera att inte alla bindningselement som anges krävs i varje bindning.

SecurityBindingElement

Tre bindningselement relaterar till säkerhet på meddelandenivå, som alla härleds SecurityBindingElement från klassen. De tre är TransportSecurityBindingElement, SymmetricSecurityBindingElementoch AsymmetricSecurityBindingElement. TransportSecurityBindingElement Används för att tillhandahålla säkerhet i blandat läge. De andra två elementen används när meddelandelagret ger säkerhet.

Ytterligare klasser används när säkerhet på transportnivå tillhandahålls:

Obligatoriska bindningselement

Det finns ett stort antal möjliga bindningselement som kan kombineras till en bindning. Alla dessa kombinationer är inte giltiga. I det här avsnittet beskrivs de nödvändiga element som måste finnas i en säkerhetsbindning.

Giltiga säkerhetsbindningar beror på många faktorer, inklusive följande:

  • Säkerhetsläge.

  • Transportprotokoll.

  • Det meddelandeutbytesmönster (MEP) som anges i kontraktet.

I följande tabell visas giltiga konfigurationer av bindningselementstacken för varje kombination av föregående faktorer. Observera att detta är minimala krav. Du kan lägga till ytterligare bindningselement i bindningen, till exempel bindningselement för meddelandekodning, transaktionsbindningselement och andra bindningselement.

Säkerhetsläge Transport Exchange-mönster för kontraktmeddelande Exchange-mönster för kontraktmeddelande Exchange-mönster för kontraktmeddelande
Datagram Request Reply Duplex
Transport Https
OneWayBindingElement
HttpsTransportBindingElement HttpsTransportBindingElement
TCP
OneWayBindingElement
SSL eller Windows StreamSecurityBindingElement SSL eller Windows StreamSecurityBindingElement SSL eller Windows StreamSecurityBindingElement
TcpTransportBindingElement TcpTransportBindingElement TcpTransportBindingElement
Meddelande Http SymmetricSecurityBindingElement SymmetricSecurityBindingElement SymmetricSecurityBindingElement (autentiseringsläge = SecureConversation)
CompositeDuplexBindingElement
OneWayBindingElement OneWayBindingElement
HttpTransportBindingElement HttpTransportBindingElement HttpTransportBindingElement
Tcp SecurityBindingElement SecurityBindingElement SymmetricSecurityBindingElement (autentiseringsläge = SecureConversation)
TcpTransportBindingElement TcpTransportBindingElement TcpTransportBindingElement
Blandat (transport med meddelandeautentiseringsuppgifter) Https TransportSecurityBindingElement TransportSecurityBindingElement
OneWayBindingElement
HttpsTransportBindingElement HttpsTransportBindingElement
TCP TransportSecurityBindingElement SymmetricSecurityBindingElement (autentiseringsläge = SecureConversation) SymmetricSecurityBindingElement (autentiseringsläge = SecureConversation)
OneWayBindingElement
SSL eller Windows StreamSecurityBindingElement SSL eller Windows StreamSecurityBindingElement SSL eller Windows StreamSecurityBindingElement
TcpTransportBindingElement TcpTransportBindingElement TcpTransportBindingElement

Observera att det finns många konfigurerbara inställningar på SecurityBindingElements. Mer information finns i SecurityBindingElement-autentiseringslägen.

Mer information finns i Säkra konversationer och säkra sessioner.

Förfaranden

Skapa en anpassad bindning som använder SymmetricSecurityBindingElement

  1. Skapa en instans av BindingElementCollection klassen med namnet outputBec.

  2. Anropa den statiska metoden M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true), som returnerar en instans av SymmetricSecurityBindingElement klassen.

  3. SymmetricSecurityBindingElement Lägg till i samlingen (outputBec) genom att anropa Add -metoden för Collection<T>BindingElement klassen.

  4. Skapa en instans av TextMessageEncodingBindingElement klassen och lägg till den i samlingen (outputBec). Detta anger den kodning som används av bindningen.

  5. Skapa en HttpTransportBindingElement och lägg till den i samlingen (outputBec). Detta anger att bindningen använder HTTP-transporten.

  6. Skapa en ny anpassad bindning genom att skapa en instans av CustomBinding klassen och skicka samlingen outputBec till konstruktorn.

  7. Den resulterande anpassade bindningen delar många av samma egenskaper som standarden WSHttpBinding. Den anger säkerhet på meddelandenivå och Windows-autentiseringsuppgifter men inaktiverar säkra sessioner, kräver att tjänstens autentiseringsuppgifter anges out-of-band och inte krypterar signaturer. Den sista kan endast styras genom att ange egenskapen enligt beskrivningen MessageProtectionOrder i steg 4. De andra två kan styras med hjälp av inställningar för standardbindningen.

Exempel

beskrivning

I följande exempel finns en fullständig funktion för att skapa en anpassad bindning som använder en 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

Se även