Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
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.
Ange egenskapen för
Modeobjektet som returneras avSecurityegenskapen.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportDu 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.MessageEller 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.TransportWithMessageCredentialDu 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
Skapa en instans av bindningen.
Ange egenskapen
ModetillTransport.Ange egenskapen
ClientCredentialtill ett lämpligt värde. Följande kod anger egenskapen tillWindows.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
Skapa en instans av bindningen.
Ange egenskapen
ModetillMessage.Ange egenskapen
ClientCredentialtill ett lämpligt värde. Följande kod anger egenskapen tillCertificate.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
Lägg till ett lämpligt bindningselement i <bindningselementet> i konfigurationsfilen. I följande exempel läggs ett <wsHttpBinding-element> till.
Lägg till ett
<binding>element och ange dessnameattribut till ett lämpligt värde.Lägg till ett
<security>element och angemodeattributet tillMessage,TransportellerTransportWithMessageCredential.Om läget är inställt på lägger du till
Transportett<transport>element och angerclientCredentialattributet till ett lämpligt värde.I följande exempel anges läget till "
Transport", och attributet för elementet<transport>angesclientCredentialTypesedan till "Windows".<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >Alternativt kan du ange
security modetill "Message", följt av ett<"message">element. Det här exemplet angerclientCredentialTypetill "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.