Procedure: De beveiligingsmodus instellen
Windows Communication Foundation-beveiliging (WCF) heeft drie algemene beveiligingsmodi die worden gevonden op de meest vooraf gedefinieerde bindingen: transport, bericht en 'transport met berichtreferentie'. Twee extra modi zijn specifiek voor twee bindingen: de modus 'alleen transportreferentie' gevonden op de BasicHttpBindingen de modus 'Beide', gevonden op de NetMsmqBinding. Dit onderwerp richt zich echter op de drie algemene beveiligingsmodi: Transport, Messageen TransportWithMessageCredential.
Houd er rekening mee dat niet elke vooraf gedefinieerde binding al deze modi ondersteunt. In dit onderwerp wordt de modus ingesteld met de WSHttpBinding en NetTcpBinding klassen en wordt gedemonstreert hoe u de modus zowel programmatisch als via configuratie instelt.
Zie WCF-beveiliging voor meer informatie, zie Beveiligingsoverzicht, Services beveiligen en Services en Clients beveiligen. Zie Transportbeveiliging en Berichtbeveiliging voor meer informatie over de transportmodus en het bericht.
De beveiligingsmodus instellen in code
Maak een exemplaar van de bindingsklasse die u gebruikt. Zie Door het systeem geleverde bindingen voor een lijst met vooraf gedefinieerde bindingen. In dit voorbeeld wordt een exemplaar van de WSHttpBinding klasse gemaakt.
Stel de
Mode
eigenschap van het object in dat wordt geretourneerd door deSecurity
eigenschap.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport
U kunt ook de modus instellen op bericht, zoals wordt weergegeven in de volgende code.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message
Of stel de modus in op transport met berichtreferenties, zoals wordt weergegeven in de volgende code.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.TransportWithMessageCredential;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportWithMessageCredential
U kunt de modus ook instellen in de constructor van de binding, zoals wordt weergegeven in de volgende code.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
Dim b As New WSHttpBinding(SecurityMode.Message)
De eigenschap ClientCredentialType instellen
Als u de modus instelt op een van de drie waarden, bepaalt u hoe u de ClientCredentialType
eigenschap instelt. Als u bijvoorbeeld de WSHttpBinding klasse gebruikt, stelt u de modus in op Transport
de manier dat u de ClientCredentialType eigenschap van de HttpTransportSecurity klasse moet instellen op een geschikte waarde.
De eigenschap ClientCredentialType instellen voor de transportmodus
Maak een exemplaar van de binding.
Stel de eigenschap
Mode
in opTransport
.Stel de
ClientCredential
eigenschap in op een geschikte waarde. Met de volgende code wordt de eigenschap ingesteld opWindows
.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport; b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows
De eigenschap ClientCredentialType instellen voor de berichtmodus
Maak een exemplaar van de binding.
Stel de eigenschap
Mode
in opMessage
.Stel de
ClientCredential
eigenschap in op een geschikte waarde. Met de volgende code wordt de eigenschap ingesteld opCertificate
.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message; b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate
De eigenschap Mode en ClientCredentialType instellen in de configuratie
Voeg een geschikt bindingselement toe aan het <bindingselement> van het configuratiebestand. In het volgende voorbeeld wordt een <wsHttpBinding-element> toegevoegd.
Voeg een
<binding>
element toe en stel het kenmerk inname
op een geschikte waarde.Voeg een
<security>
element toe en stel hetmode
kenmerk in opMessage
,Transport
ofTransportWithMessageCredential
.Als de modus is ingesteld
Transport
op, voegt u een<transport>
element toe en stelt u hetclientCredential
kenmerk in op een geschikte waarde.In het volgende voorbeeld wordt de modus ingesteld op '
Transport"
en wordt vervolgens hetclientCredentialType
kenmerk van het<transport>
element ingesteld op 'Windows"
.<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >
U kunt ook de
security mode
optie instellen op 'Message"
, gevolgd door een<"message">
element. In dit voorbeeld wordt de optieclientCredentialType
ingesteld op 'Certificate"
.<wsHttpBinding> <binding name="MessageSecurity"> <security mode="Message" > <message clientCredentialType = "Certificate" /> </security> </binding> </wsHttpBinding >
Het gebruik van de TransportWithMessageCredential waarde is een speciaal geval en wordt hieronder uitgelegd.
TransportWithMessageCredential gebruiken
Bij het instellen van de beveiligingsmodus TransportWithMessageCredential
bepaalt het transport het daadwerkelijke mechanisme dat de beveiliging op transportniveau biedt. Het HTTP-protocol maakt bijvoorbeeld gebruik van Secure Sockets Layer (SSL) via HTTP (HTTPS). Daarom wordt het instellen van de ClientCredentialType
eigenschap van een transportbeveiligingsobject (zoals HttpTransportSecurity) genegeerd. Met andere woorden, u kunt alleen het ClientCredentialType
berichtbeveiligingsobject instellen (voor de WSHttpBinding
binding, het NonDualMessageSecurityOverHttp object).
Zie Procedure: Transportbeveiliging en berichtreferenties gebruiken voor meer informatie.