Postupy: Nastavení režimu zabezpečení
Zabezpečení wcf (Windows Communication Foundation) má tři běžné režimy zabezpečení, které se nacházejí u většiny předdefinovaných vazeb: přenos, zpráva a přenos s přihlašovacími údaji zprávy. Dva další režimy jsou specifické pro dvě vazby: režim "pouze transport-credential" nalezený v BasicHttpBindingrežimu , a "Oba" režim nalezen na NetMsmqBinding. Toto téma se však zaměřuje na tři běžné režimy zabezpečení: Transport, Messagea TransportWithMessageCredential.
Všimněte si, že ne všechny předdefinované vazby podporují všechny tyto režimy. Toto téma nastaví režim s třídami WSHttpBinding a NetTcpBinding ukazuje, jak režim nastavit programově i prostřednictvím konfigurace.
Další informace naleznete v tématu Zabezpečení WCF, viz přehled zabezpečení, zabezpečení služeb a zabezpečení služeb a klientů. Další informace o režimu přenosu a zprávě naleznete v tématu Zabezpečení přenosu a zabezpečení zpráv.
Nastavení režimu zabezpečení v kódu
Vytvořte instanci třídy vazby, kterou používáte. Seznam předdefinovaných vazeb naleznete v tématu Systémové vazby. Tento příklad vytvoří instanci WSHttpBinding třídy.
Mode
Nastavte vlastnost objektu vrácenéhoSecurity
vlastností.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport
Případně nastavte režim na zprávu, jak je znázorněno v následujícím kódu.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message
Nebo nastavte režim přenosu pomocí přihlašovacích údajů zprávy, jak je znázorněno v následujícím kódu.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.TransportWithMessageCredential;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportWithMessageCredential
Režim můžete také nastavit v konstruktoru vazby, jak je znázorněno v následujícím kódu.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
Dim b As New WSHttpBinding(SecurityMode.Message)
Nastavení vlastnosti ClientCredentialType
Nastavení režimu na jednu ze tří hodnot určuje způsob nastavení ClientCredentialType
vlastnosti. Například pomocí WSHttpBinding třídy, nastavení režimu znamená Transport
, že musíte nastavit ClientCredentialType vlastnost HttpTransportSecurity třídy na odpovídající hodnotu.
Nastavení vlastnosti ClientCredentialType pro režim přenosu
Vytvořte instanci vazby.
Nastavte vlastnost
Mode
naTransport
.ClientCredential
Nastavte vlastnost na odpovídající hodnotu. Následující kód nastaví vlastnost naWindows
.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
Nastavení vlastnosti ClientCredentialType pro režim zprávy
Vytvořte instanci vazby.
Nastavte vlastnost
Mode
naMessage
.ClientCredential
Nastavte vlastnost na odpovídající hodnotu. Následující kód nastaví vlastnost naCertificate
.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
Nastavení vlastnosti Mode a ClientCredentialType v konfiguraci
Přidejte odpovídající element vazby do <elementu bindings> konfiguračního souboru. Následující příklad přidá <wsHttpBinding> element.
<binding>
Přidejte prvek a nastavte jehoname
atribut na odpovídající hodnotu.Přidání elementu
<security>
a nastavení atributumode
naMessage
,Transport
neboTransportWithMessageCredential
.Pokud je režim nastaven na
Transport
, přidejte<transport>
prvek a nastavteclientCredential
atribut na odpovídající hodnotu.Následující příklad nastaví režim na "
Transport"
, a pak nastavíclientCredentialType
atribut elementu<transport>
na "Windows"
.<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >
Případně nastavte
security mode
hodnotu "Message"
, následovanou prvkem<"message">
. Tento příklad nastaví hodnotuclientCredentialType
"Certificate"
.<wsHttpBinding> <binding name="MessageSecurity"> <security mode="Message" > <message clientCredentialType = "Certificate" /> </security> </binding> </wsHttpBinding >
TransportWithMessageCredential Použití hodnoty je zvláštní případ a je vysvětleno níže.
Použití TransportWithMessageCredential
Při nastavování režimu zabezpečení na TransportWithMessageCredential
, přenos určuje skutečný mechanismus, který poskytuje zabezpečení na úrovni přenosu. Například protokol HTTP používá protokol SSL (Secure Sockets Layer) přes HTTP (HTTPS). Proto je nastavení vlastnosti jakéhokoli objektu ClientCredentialType
zabezpečení přenosu (například HttpTransportSecurity) ignorováno. Jinými slovy, můžete nastavit ClientCredentialType
pouze objekt zabezpečení zprávy (pro WSHttpBinding
vazbu, NonDualMessageSecurityOverHttp objekt).
Další informace naleznete v tématu Postupy: Použití přihlašovacích údajů zabezpečení přenosu a zpráv.