Delen via


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

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

  2. Stel de Mode eigenschap van het object in dat wordt geretourneerd door de Security 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
    
  3. 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

  1. Maak een exemplaar van de binding.

  2. Stel de eigenschap Mode in op Transport.

  3. Stel de ClientCredential eigenschap in op een geschikte waarde. Met de volgende code wordt de eigenschap ingesteld op Windows.

    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

  1. Maak een exemplaar van de binding.

  2. Stel de eigenschap Mode in op Message.

  3. Stel de ClientCredential eigenschap in op een geschikte waarde. Met de volgende code wordt de eigenschap ingesteld op Certificate.

    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

  1. Voeg een geschikt bindingselement toe aan het <bindingselement> van het configuratiebestand. In het volgende voorbeeld wordt een <wsHttpBinding-element> toegevoegd.

  2. Voeg een <binding> element toe en stel het kenmerk in name op een geschikte waarde.

  3. Voeg een <security> element toe en stel het mode kenmerk in op Message, Transportof TransportWithMessageCredential.

  4. Als de modus is ingesteld Transportop, voegt u een <transport> element toe en stelt u het clientCredential kenmerk in op een geschikte waarde.

    In het volgende voorbeeld wordt de modus ingesteld op 'Transport"en wordt vervolgens het clientCredentialType 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 optie clientCredentialType 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 TransportWithMessageCredentialbepaalt 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.

Zie ook