Útmutató: A biztonsági mód beállítása
A Windows Communication Foundation (WCF) biztonsága három gyakori biztonsági móddal rendelkezik, amelyek a legtöbb előre definiált kötésen megtalálhatók: átvitel, üzenet és "átvitel üzenet hitelesítő adatokkal". Két további mód két kötésre vonatkozik: a "transport-credential only" (csak transport-credential only) módra, és a BasicHttpBinding"Both" módra, amely a NetMsmqBinding. Ez a témakör azonban a három gyakori biztonsági módra összpontosít: Transport, Messageés TransportWithMessageCredential.
Vegye figyelembe, hogy nem minden előre definiált kötés támogatja ezeket a módokat. Ez a témakör a módot az WSHttpBinding osztályokkal együtt NetTcpBinding állítja be, és bemutatja, hogyan állíthatja be a módot programozott módon és konfiguráción keresztül is.
További információ: WCF-biztonság, a biztonság áttekintése, a szolgáltatások biztonságossá tétele, valamint a szolgáltatások és ügyfelek védelme. További információ az átviteli módról és az üzenetről: Transport Security and Message Security.
A biztonsági mód beállítása kódban
Hozza létre a használt kötésosztály egy példányát. Az előre definiált kötések listáját a Rendszer által biztosított kötések című témakörben találja. Ez a példa létrehozza az osztály egy példányát WSHttpBinding .
Állítsa be a
Mode
tulajdonság által visszaadott objektum tulajdonságátSecurity
.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport
Másik lehetőségként állítsa a módot üzenetre, ahogyan az az alábbi kódban is látható.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message
Vagy állítsa be a módot az üzenet hitelesítő adataival való átvitelre az alábbi kódban látható módon.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.TransportWithMessageCredential;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportWithMessageCredential
A módot a kötés konstruktorában is beállíthatja, ahogy az az alábbi kódban is látható.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
Dim b As New WSHttpBinding(SecurityMode.Message)
A ClientCredentialType tulajdonság beállítása
Ha a módot a három érték egyikére állítja, az határozza meg a tulajdonság beállítását ClientCredentialType
. Ha például az WSHttpBinding osztályt használja, a mód beállítása azt jelenti, hogy Transport
az ClientCredentialType osztály tulajdonságát HttpTransportSecurity egy megfelelő értékre kell állítania.
A ClientCredentialType tulajdonság beállítása átviteli módhoz
Hozza létre a kötés egy példányát.
Állítsa be a tulajdonságot a
Mode
következőreTransport
: .Állítsa be a
ClientCredential
tulajdonságot egy megfelelő értékre. Az alábbi kód a tulajdonságot a következőreWindows
állítja be: .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
Az Üzenet mód ClientCredentialType tulajdonságának beállítása
Hozza létre a kötés egy példányát.
Állítsa be a tulajdonságot a
Mode
következőreMessage
: .Állítsa be a
ClientCredential
tulajdonságot egy megfelelő értékre. Az alábbi kód a tulajdonságot a következőreCertificate
állítja be: .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
A Mode és a ClientCredentialType tulajdonság beállítása konfigurációban
Adjon hozzá egy megfelelő kötési elemet a <konfigurációs fájl kötési> eleméhez. Az alábbi példa egy <wsHttpBinding> elemet ad hozzá.
Adjon hozzá egy
<binding>
elemet, és állítsa az attribútumátname
egy megfelelő értékre.Adjon hozzá egy
<security>
elemet, és állítsa azmode
attribútumot a következőreMessage
: ,Transport
vagyTransportWithMessageCredential
.Ha a mód be van állítva
Transport
, adjon hozzá egy<transport>
elemet, és állítsa be azclientCredential
attribútumot egy megfelelő értékre.Az alábbi példa a "
Transport"
, majd azclientCredentialType
elem attribútumát "Windows"
-ra állítja<transport>
.<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >
Másik lehetőségként állítsa be a
security mode
"Message"
, majd egy<"message">
elem" értéket. Ez a példa a következőt állítjaclientCredentialType
be: "Certificate"
.<wsHttpBinding> <binding name="MessageSecurity"> <security mode="Message" > <message clientCredentialType = "Certificate" /> </security> </binding> </wsHttpBinding >
TransportWithMessageCredential Az érték használata egy speciális eset, és az alábbiakban ismertetjük.
A TransportWithMessageCredential használata
A biztonsági mód TransportWithMessageCredential
beállításakor az átvitel határozza meg az átviteli szintű biztonságot biztosító tényleges mechanizmust. A HTTP-protokoll például a Secure Sockets Layer (SSL) protokollt használja HTTP-n (HTTPS) keresztül. Ezért a rendszer figyelmen kívül hagyja az ClientCredentialType
átviteli biztonsági objektumok (például HttpTransportSecurity) tulajdonságának beállítását. Más szóval csak az ClientCredentialType
üzenet biztonsági objektumát állíthatja be (a WSHttpBinding
kötéshez, az NonDualMessageSecurityOverHttp objektumhoz).
További információ : Az átviteli biztonság és az üzenet hitelesítő adatainak használata.