Instrukcje: Ustawianie trybu zabezpieczeń

Zabezpieczenia programu Windows Communication Foundation (WCF) mają trzy typowe tryby zabezpieczeń, które znajdują się w większości wstępnie zdefiniowanych powiązań: transport, komunikat i "transport z poświadczeniami komunikatu". Dwa dodatkowe tryby są specyficzne dla dwóch powiązań: tryb "tylko transport-credential" znaleziony w trybie BasicHttpBinding, i "Oba" w systemie NetMsmqBinding. Jednak ten temat koncentruje się na trzech typowych trybach zabezpieczeń: Transport, Messagei TransportWithMessageCredential.

Należy pamiętać, że nie każde wstępnie zdefiniowane powiązanie obsługuje wszystkie te tryby. W tym temacie ustawiono tryb z klasami WSHttpBinding i NetTcpBinding i oraz pokazano, jak ustawić tryb zarówno programowo, jak i przez konfigurację.

Aby uzyskać więcej informacji, zobacz Zabezpieczenia WCF, zobacz Omówienie zabezpieczeń, Zabezpieczanie usług i Zabezpieczanie usług i klientów. Aby uzyskać więcej informacji na temat trybu transportu i komunikatów, zobacz Transport Security and Message Security (Zabezpieczenia transportu i zabezpieczenia komunikatów).

Aby ustawić tryb zabezpieczeń w kodzie

  1. Utwórz wystąpienie używanej klasy powiązania. Aby uzyskać listę wstępnie zdefiniowanych powiązań, zobacz Powiązania dostarczone przez system. W tym przykładzie WSHttpBinding zostanie utworzone wystąpienie klasy .

  2. Mode Ustaw właściwość obiektu zwróconego Security przez właściwość .

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Transport;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Transport
    

    Możesz też ustawić tryb na komunikat, jak pokazano w poniższym kodzie.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Message;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    

    Możesz też ustawić tryb transportu przy użyciu poświadczeń wiadomości, jak pokazano w poniższym kodzie.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.TransportWithMessageCredential;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.TransportWithMessageCredential
    
  3. Możesz również ustawić tryb w konstruktorze powiązania, jak pokazano w poniższym kodzie.

    WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
    
    Dim b As New WSHttpBinding(SecurityMode.Message)
    

Ustawianie właściwości ClientCredentialType

Ustawienie trybu na jedną z trzech wartości określa sposób ustawiania ClientCredentialType właściwości. Na przykład przy użyciu WSHttpBinding klasy ustawienie trybu oznacza, że należy ustawić TransportClientCredentialType właściwość HttpTransportSecurity klasy na odpowiednią wartość.

Aby ustawić właściwość ClientCredentialType dla trybu transportu

  1. Utwórz wystąpienie powiązania.

  2. Ustaw właściwość Mode na Transport.

  3. ClientCredential Ustaw właściwość na odpowiednią wartość. Poniższy kod ustawia właściwość na Windowswartość .

    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
    

Aby ustawić właściwość ClientCredentialType dla trybu komunikatu

  1. Utwórz wystąpienie powiązania.

  2. Ustaw właściwość Mode na Message.

  3. ClientCredential Ustaw właściwość na odpowiednią wartość. Poniższy kod ustawia właściwość na Certificatewartość .

    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
    

Aby ustawić właściwość Mode i ClientCredentialType w konfiguracji

  1. Dodaj odpowiedni element powiązania do <elementu bindings> pliku konfiguracji. Poniższy przykład dodaje element wsHttpBinding>.<

  2. <binding> Dodaj element i ustaw jego name atrybut na odpowiednią wartość.

  3. <security> Dodaj element i ustaw mode atrybut na Message, Transportlub TransportWithMessageCredential.

  4. Jeśli tryb jest ustawiony na Transport, dodaj <transport> element i ustaw clientCredential atrybut na odpowiednią wartość.

    Poniższy przykład ustawia tryb na "Transport", a następnie ustawia clientCredentialType atrybut elementu <transport> na "Windows".

    <wsHttpBinding>
    <binding name="TransportSecurity">
        <security mode="Transport" >
           <transport clientCredentialType = "Windows" />
        </security>
    </binding>
    </wsHttpBinding >
    

    Alternatywnie ustaw wartość na security mode "Message", a następnie <"message"> element . W tym przykładzie ustawiono wartość clientCredentialType "Certificate".

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

    TransportWithMessageCredential Użycie wartości jest specjalnym przypadkiem i zostało wyjaśnione poniżej.

Korzystanie z elementu TransportWithMessageCredential

Podczas ustawiania trybu zabezpieczeń na TransportWithMessageCredentialwartość transport określa rzeczywisty mechanizm zapewniający zabezpieczenia na poziomie transportu. Na przykład protokół HTTP używa protokołu Secure Sockets Layer (SSL) za pośrednictwem protokołu HTTP (HTTPS). W związku z tym ustawienie ClientCredentialType właściwości dowolnego obiektu zabezpieczeń transportu (na przykład HttpTransportSecurity) jest ignorowane. Innymi słowy, można ustawić ClientCredentialType tylko obiekt zabezpieczeń komunikatów (dla WSHttpBinding powiązania NonDualMessageSecurityOverHttp , obiektu).

Aby uzyskać więcej informacji, zobacz How to: Use Transport Security and Message Credentials (Instrukcje: używanie zabezpieczeń transportu i poświadczeń komunikatów).

Zobacz też