Dela via


Gör så här: Ange säkerhetsläget

Säkerhet i Windows Communication Foundation (WCF) har tre vanliga säkerhetslägen som finns på de flesta fördefinierade bindningar: transport, meddelande och "transport med meddelandeautentiseringsuppgifter". Två ytterligare lägen är specifika för två bindningar: läget "endast transportautentiseringsuppgifter" som finns i BasicHttpBindingläget , och "Båda", som finns i NetMsmqBinding. Det här avsnittet fokuserar dock på de tre vanliga säkerhetslägena: Transport, Messageoch TransportWithMessageCredential.

Observera att inte alla fördefinierade bindningar stöder alla dessa lägen. Det här avsnittet anger läget med WSHttpBinding klasserna och NetTcpBinding och visar hur du ställer in läget både programmatiskt och via konfiguration.

Mer information finns i WCF-säkerhet i Säkerhetsöversikt, Skydda tjänster och Skydda tjänster och klienter. Mer information om transportläge och meddelande finns i Transportsäkerhet och Meddelandesäkerhet.

Så här anger du säkerhetsläget i kod

  1. Skapa en instans av bindningsklassen som du använder. En lista över fördefinierade bindningar finns i System-Provided Bindings (System-Provided Bindings). I det här exemplet skapas en instans av WSHttpBinding klassen.

  2. Ange egenskapen för Mode objektet som returneras av Security egenskapen.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Transport;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Transport
    

    Du kan också ange läget till meddelande, som du ser i följande kod.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Message;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    

    Eller ange läget för att transportera med meddelandeautentiseringsuppgifter, som du ser i följande kod.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.TransportWithMessageCredential;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.TransportWithMessageCredential
    
  3. Du kan också ange läget i konstruktorn för bindningen, enligt följande kod.

    WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
    
    Dim b As New WSHttpBinding(SecurityMode.Message)
    

Ange egenskapen ClientCredentialType

Om du anger läget till ett av de tre värdena avgör du hur du anger ClientCredentialType egenskapen. Om du till exempel använder WSHttpBinding klassen innebär det att Transport du måste ange ClientCredentialType egenskapen HttpTransportSecurity för klassen till ett lämpligt värde.

Så här anger du egenskapen ClientCredentialType för transportläge

  1. Skapa en instans av bindningen.

  2. Ange egenskapen Mode till Transport.

  3. Ange egenskapen ClientCredential till ett lämpligt värde. Följande kod anger egenskapen till 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
    

Så här anger du egenskapen ClientCredentialType för meddelandeläge

  1. Skapa en instans av bindningen.

  2. Ange egenskapen Mode till Message.

  3. Ange egenskapen ClientCredential till ett lämpligt värde. Följande kod anger egenskapen till 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
    

Så här anger du egenskapen Mode och ClientCredentialType i konfigurationen

  1. Lägg till ett lämpligt bindningselement i <bindningselementet> i konfigurationsfilen. I följande exempel läggs ett <wsHttpBinding-element> till.

  2. Lägg till ett <binding> element och ange dess name attribut till ett lämpligt värde.

  3. Lägg till ett <security> element och ange mode attributet till Message, Transporteller TransportWithMessageCredential.

  4. Om läget är inställt på lägger du till Transportett <transport> element och anger clientCredential attributet till ett lämpligt värde.

    I följande exempel anges läget till "Transport", och attributet för elementet <transport> anges clientCredentialType sedan till "Windows".

    <wsHttpBinding>
    <binding name="TransportSecurity">
        <security mode="Transport" >
           <transport clientCredentialType = "Windows" />
        </security>
    </binding>
    </wsHttpBinding >
    

    Alternativt kan du ange security mode till "Message", följt av ett <"message"> element. Det här exemplet anger clientCredentialType till "Certificate".

    <wsHttpBinding>
    <binding name="MessageSecurity">
        <security mode="Message" >
           <message clientCredentialType = "Certificate" />
        </security>
    </binding>
    </wsHttpBinding >
    

    Att använda värdet TransportWithMessageCredential är ett specialfall och förklaras nedan.

Använda TransportWithMessageCredential

När du ställer in säkerhetsläget på TransportWithMessageCredentialavgör transporten den faktiska mekanism som ger säkerhet på transportnivå. HTTP-protokollet använder till exempel SSL (Secure Sockets Layer) via HTTP (HTTPS). Därför ignoreras inställningen av egenskapen för ClientCredentialType alla transportsäkerhetsobjekt (till exempel HttpTransportSecurity) . Med andra ord kan du bara ange ClientCredentialType meddelandets säkerhetsobjekt (för bindningen WSHttpBinding , NonDualMessageSecurityOverHttp objektet).

Mer information finns i Så här använder du autentiseringsuppgifter för transportsäkerhet och meddelande.

Se även