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

  1. Vytvořte instanci třídy vazby, kterou používáte. Seznam předdefinovaných svázání najdete v tématu System-Provided Bindings. Tento příklad vytvoří instanci WSHttpBinding třídy.

  2. Nastavte vlastnost Mode objektu vráceného vlastností Security.

    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
    
  3. 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 při použití třídy WSHttpBinding, nastavení režimu na Transport znamená, že musíte nastavit vlastnost ClientCredentialType třídy HttpTransportSecurity na odpovídající hodnotu.

Nastavení vlastnosti ClientCredentialType pro režim přenosu

  1. Vytvořte instanci vazby.

  2. Nastavte vlastnost Mode na Transport.

  3. ClientCredential Nastavte vlastnost na odpovídající hodnotu. Následující kód nastaví vlastnost na 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
    

Nastavení vlastnosti ClientCredentialType pro režim zprávy

  1. Vytvořte instanci vazby.

  2. Nastavte vlastnost Mode na Message.

  3. ClientCredential Nastavte vlastnost na odpovídající hodnotu. Následující kód nastaví vlastnost na 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
    

Nastavení vlastnosti Mode a ClientCredentialType v konfiguraci

  1. Přidejte vhodný vazebný element do <bindings> elementu konfiguračního souboru. Následující příklad přidá <wsHttpBinding> element.

  2. <binding> Přidejte prvek a nastavte jeho name atribut na odpovídající hodnotu.

  3. Přidání elementu <security> a nastavení atributu mode na Message, Transportnebo TransportWithMessageCredential.

  4. Pokud je režim nastaven na Transport, přidejte <transport> prvek a nastavte clientCredential 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í clientCredentialType na "Certificate".

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

    Použití hodnoty TransportWithMessageCredential je zvláštní případ. Toto 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 pouze ClientCredentialType objekt zabezpečení zprávy (pro WSHttpBinding vazbu, NonDualMessageSecurityOverHttp objekt).

Další informace naleznete v tématu Postupy: Zabezpečení přenosu a přihlašovací údaje zpráv.

Viz také