Sdílet prostřednictvím


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 vazeb naleznete v tématu Systémové vazby. Tento příklad vytvoří instanci WSHttpBinding třídy.

  2. Mode Nastavte vlastnost objektu vráceného Security 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
    
  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 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

  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 odpovídající element vazby do <elementu bindings> 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í hodnotu clientCredentialType "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.

Viz také