Udostępnij za pośrednictwem


<<zabezpieczenia> elementu customBinding>

Określa opcje zabezpieczeń dla powiązania niestandardowego.

<konfiguracji>
  <System.servicemodel>
    <Powiązania>
      <Custombinding>
        <Wiązania>
          <Zabezpieczenia >

Składnia

<security allowSerializedSigningTokenOnReply="Boolean"
          authenticationMode="AuthenticationMode"
          defaultAlgorithmSuite="SecurityAlgorithmSuite"
          includeTimestamp="Boolean"
          requireDerivedKeys="Boolean"
          keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy"
          messageProtectionOrder="SignBeforeEncrypt/SignBeforeEncryptAndEncryptSignature/EncryptBeforeSign"
          messageSecurityVersion="WSSecurityJan2004/WSSecurityXXX2005"
          requireSecurityContextCancellation="Boolean"
          requireSignatureConfirmation="Boolean"
          securityHeaderLayout="Strict/Lax/LaxTimestampFirst/LaxTimestampLast">
   <issuedTokenParameters />
   <localClientSettings />
   <localServiceSettings />
   <secureConversationBootstrap />
</security>

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne

Atrybuty

Atrybut opis
allowSerializedSigningTokenOnReply Opcjonalny. Wartość logiczna określająca, czy w odpowiedzi można użyć zserializowanego tokenu. Domyślna wartość to false. W przypadku używania powiązania podwójnego ustawienie jest domyślnie true ustawione i wszystkie ustawienia wprowadzone zostaną zignorowane.
Authenticationmode Opcjonalny. Określa tryb uwierzytelniania używany między inicjatorem a obiektem odpowiadającym. Poniżej przedstawiono wszystkie wartości.

Wartość domyślna to sspiNegotiated.
defaultAlgorithmSuite Opcjonalny. Ustawia algorytmy szyfrowania komunikatów i zawijania klucza. Algorytmy i rozmiary kluczy są określane przez klasę SecurityAlgorithmSuite . Te algorytmy są mapowanie na te określone w specyfikacji WS-SecurityPolicy języka zasad zabezpieczeń.

Poniżej przedstawiono możliwe wartości. Domyślna wartość to Basic256.

Ten atrybut jest używany podczas pracy z inną platformą, która wybiera zestaw algorytmów inny niż domyślny. Podczas wprowadzania modyfikacji tego ustawienia należy pamiętać o mocnych i słabych stronach odpowiednich algorytmów. Ten atrybut jest typu SecurityAlgorithmSuite.
includeTimestamp Wartość logiczna określająca, czy sygnatury czasowe są zawarte w każdym komunikacie. Wartość domyślna to true.
keyEntropyMode Określa sposób, w jaki klucze do zabezpieczania komunikatów są obliczane. Klucze mogą być oparte tylko na materiale klucza klienta, tylko na materiale klucza usługi lub kombinacji obu tych kluczy. Prawidłowe wartości to

- ClientEntropy: Klucz sesji jest oparty na kluczowych danych dostarczonych przez klienta.
- ServerEntropy: Klucz sesji jest oparty na kluczowych danych dostarczonych przez serwer.
- CombinedEntropy: Klucz sesji jest oparty na kluczowych danych udostępnianych przez klienta i usługę.

Wartość domyślna to CombinedEntropy.

Ten atrybut jest typu SecurityKeyEntropyMode.
Messageprotectionorder Ustawia kolejność, w jakiej algorytmy zabezpieczeń na poziomie komunikatu są stosowane do komunikatu. Prawidłowe wartości obejmują następujące wartości:

- SignBeforeEncrypt: Najpierw podpisz, a następnie szyfruj.
- SignBeforeEncryptAndEncryptSignature: Najpierw podpisz, szyfruj, a następnie szyfruj podpis.
- EncryptBeforeSign: Najpierw szyfruj, a następnie podpisz.

Wartość domyślna zależy od używanej wersji usługi WS-Security. Wartość domyślna jest SignBeforeEncryptAndEncryptSignature używana podczas korzystania z usługi WS-Security 1.1. Wartość domyślna to SignBeforeEncrypt w przypadku korzystania z programu WS-Security 1.0.

Ten atrybut jest typu MessageProtectionOrder.
Messagesecurityversion Opcjonalny. Ustawia wersję używanego rozwiązania WS-Security. Prawidłowe wartości obejmują następujące wartości:

- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
- WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

Wartość domyślna to WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 i może być wyrażona w kodzie XML jako po prostu Default. Ten atrybut jest typu MessageSecurityVersion.
requireDerivedKeys Wartość logiczna określająca, czy klucze mogą pochodzić z oryginalnych kluczy dowodowych. Wartość domyślna to true.
requireSecurityContextCancellation Opcjonalny. Wartość logiczna określająca, czy kontekst zabezpieczeń powinien zostać anulowany i zakończony, gdy nie jest już potrzebny. Wartość domyślna to true.
requireSignatureConfirmation Opcjonalny. Wartość logiczna określająca, czy jest włączone potwierdzenie podpisu WS-Security. Po ustawieniu truewartości na wartość podpisy komunikatów są potwierdzane przez obiekt odpowiadający. Jeśli powiązanie niestandardowe jest skonfigurowane dla certyfikatów wzajemnych lub jest skonfigurowane do używania wystawionych tokenów (powiązania WSS 1.1) ten atrybut jest domyślnie ustawiony na true. W przeciwnym razie wartość domyślna to false.

Potwierdzenie podpisu jest używane do potwierdzenia, że usługa odpowiada w pełni świadomy żądania.
securityHeaderLayout Opcjonalny. Określa kolejność elementów w nagłówku zabezpieczeń. Prawidłowe wartości to

- Strict: Elementy są dodawane do nagłówka zabezpieczeń zgodnie z ogólną zasadą "deklarowania przed użyciem".
- Lax: Elementy są dodawane do nagłówka zabezpieczeń w dowolnej kolejności, która potwierdza zabezpieczenia usług WSS: protokół SOAP Message.
- LaxWithTimestampFirst: Elementy są dodawane do nagłówka zabezpieczeń w dowolnej kolejności, która potwierdza usługę WSS: Zabezpieczenia komunikatów PROTOKOŁU SOAP, z wyjątkiem tego, że pierwszy element w nagłówku zabezpieczeń musi być elementem wsse:Timestamp.
- LaxWithTimestampLast: Elementy są dodawane do nagłówka zabezpieczeń w dowolnej kolejności, która potwierdza usługę WSS: Zabezpieczenia komunikatów PROTOKOŁU SOAP, z wyjątkiem tego, że ostatni element w nagłówku zabezpieczeń musi być elementem wsse:Timestamp.

Wartość domyślna to Strict.

Ten element jest typu SecurityHeaderLayout.

authenticationMode, atrybut

Wartość Opis
String AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

defaultAlgorithm, atrybut

Wartość Opis
Podstawowa 128 Użyj szyfrowania Aes128, sha1 dla skrótu komunikatów i Rsa-oaep-mgf1p dla zawijania klucza.
Podstawowa 192 Użyj szyfrowania Aes192, Sha1 dla skrótu komunikatów, Rsa-oaep-mgf1p dla zawijania klucza.
Podstawowa 256 Użyj szyfrowania Aes256, Sha1 dla skrótu komunikatów, Rsa-oaep-mgf1p dla zawijania klucza.
Basic256Rsa15 Użyj protokołu Aes256 do szyfrowania komunikatów, sha1 dla skrótu komunikatów i rsa15 dla zawijania klucza.
Basic192Rsa15 Użyj protokołu Aes192 do szyfrowania komunikatów, sha1 dla skrótu komunikatów i rsa15 dla zawijania klucza.
Tripledes Użyj szyfrowania TripleDes, Sha1 dla skrótu komunikatów, Rsa-oaep-mgf1p dla zawijania klucza.
Basic128Rsa15 Użyj protokołu Aes128 do szyfrowania komunikatów, sha1 dla skrótu komunikatów i rsa15 dla zawijania klucza.
TripleDesRsa15 Użyj szyfrowania TripleDes, sha1 na potrzeby skrótu komunikatów i rsa15 dla zawijania klucza.
Basic128Sha256 Użyj protokołu Aes128 do szyfrowania komunikatów, sha256 na potrzeby skrótu komunikatów i rsa-oaep-mgf1p dla zawijania klucza.
Basic192Sha256 Użyj protokołu Aes192 do szyfrowania komunikatów, sha256 na potrzeby skrótu komunikatów i rsa-oaep-mgf1p dla zawijania klucza.
Basic256Sha256 Użyj protokołu Aes256 do szyfrowania komunikatów, sha256 dla skrótów komunikatów i Rsa-oaep-mgf1p dla zawijania klucza.
TripleDesSha256 Użyj funkcji TripleDes do szyfrowania komunikatów, sha256 dla skrótów komunikatów i Rsa-oaep-mgf1p dla zawijania klucza.
Basic128Sha256Rsa15 Użyj protokołu Aes128 do szyfrowania komunikatów, sha256 na potrzeby szyfrowania komunikatów i rsa15 dla zawijania klucza.
Basic192Sha256Rsa15 Użyj protokołu Aes192 do szyfrowania komunikatów, sha256 na potrzeby skrótu komunikatów i rsa15 dla zawijania klucza.
Basic256Sha256Rsa15 Użyj protokołu Aes256 do szyfrowania komunikatów Sha256 w celu szyfrowania komunikatów i rsa15 dla zawijania klucza.
TripleDesSha256Rsa15 Użyj funkcji TripleDes do szyfrowania komunikatów, sha256 na potrzeby skrótu komunikatów i rsa15 dla zawijania klucza.

Elementy podrzędne

Element opis
<issuedTokenParameters> Określa bieżący wystawiony token. Ten element jest typu IssuedTokenParametersElement.
<localClient Ustawienia> Określa ustawienia zabezpieczeń klienta lokalnego dla tego powiązania. Ten element jest typu LocalClientSecuritySettingsElement.
<localService Ustawienia> Określa ustawienia zabezpieczeń usługi lokalnej dla tego powiązania. Ten element jest typu LocalServiceSecuritySettingsElement.
<secureConversationBootstrap> Określa wartości domyślne używane do inicjowania bezpiecznej usługi konwersacji.

Elementy nadrzędne

Element opis
<Wiązania> Definiuje wszystkie możliwości powiązania niestandardowego.

Uwagi

Aby uzyskać więcej informacji na temat używania tego elementu, zobacz SecurityBindingElement Authentication Modes (Tryby uwierzytelniania SecurityBindingElement) i How to: Create a Custom Binding Using the SecurityBindingElement (Jak utworzyć powiązanie niestandardowe przy użyciu elementu SecurityBindingElement).

Przykład

W poniższym przykładzie pokazano, jak skonfigurować zabezpieczenia przy użyciu powiązania niestandardowego. Pokazuje on, jak używać powiązania niestandardowego w celu włączenia zabezpieczeń na poziomie komunikatów wraz z bezpiecznym transportem. Jest to przydatne, gdy wymagany jest bezpieczny transport do przesyłania komunikatów między klientem i usługą, a jednocześnie komunikaty muszą być bezpieczne na poziomie komunikatu. Ta konfiguracja nie jest obsługiwana przez powiązania dostarczone przez system.

Konfiguracja usługi definiuje niestandardowe powiązanie, które obsługuje komunikację TCP chronioną przy użyciu protokołu TLS/SSL i zabezpieczeń komunikatów systemu Windows. Powiązanie niestandardowe używa certyfikatu usługi do uwierzytelniania usługi na poziomie transportu i ochrony komunikatów podczas transmisji między klientem a usługą. Jest to realizowane przez element powiązania sslStreamSecurity>.< Certyfikat usługi jest skonfigurowany przy użyciu zachowania usługi.

Ponadto powiązanie niestandardowe używa zabezpieczeń komunikatów z typem poświadczeń systemu Windows — jest to domyślny typ poświadczeń. Jest to realizowane przez element powiązania zabezpieczeń . Zarówno klient, jak i usługa są uwierzytelniane przy użyciu zabezpieczeń na poziomie komunikatów, jeśli jest dostępny mechanizm uwierzytelniania Kerberos. Jeśli mechanizm uwierzytelniania Kerberos jest niedostępny, używane jest uwierzytelnianie NTLM. Protokół NTLM uwierzytelnia klienta w usłudze, ale nie uwierzytelnia usługi na kliencie. Element powiązania zabezpieczeń jest skonfigurowany do używania SecureConversation parametru authenticationType, co powoduje utworzenie sesji zabezpieczeń zarówno na kliencie, jak i w usłudze. Jest to wymagane, aby umożliwić pracę kontraktu dwustronnego usługi. Aby uzyskać więcej informacji na temat uruchamiania tego przykładu, zobacz Zabezpieczenia powiązań niestandardowych.

<configuration>
  <system.serviceModel>
    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService"
               behaviorConfiguration="CalculatorServiceBehavior">
        <host>
          <baseAddresses>
            <!-- use following base address -->
            <add baseAddress="net.tcp://localhost:8000/ServiceModelSamples/Service"/>
          </baseAddresses>
        </host>
        <endpoint address=""
                  binding="customBinding"
                  bindingConfiguration="Binding1"
                  contract="Microsoft.ServiceModel.Samples.ICalculatorDuplex" />
        <!-- the mex endpoint is exposed at net.tcp://localhost:8000/ServiceModelSamples/service/mex -->
        <endpoint address="mex"
                  binding="mexTcpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
    <bindings>
      <!-- configure a custom binding -->
      <customBinding>
        <binding name="Binding1">
          <security authenticationMode="SecureConversation"
                    requireSecurityContextCancellation="true">
          </security>
          <textMessageEncoding messageVersion="Soap12WSAddressing10"
                               writeEncoding="utf-8" />
          <sslStreamSecurity requireClientCertificate="false" />
          <tcpTransport />
        </binding>
      </customBinding>
    </bindings>
    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata />
          <serviceDebug includeExceptionDetailInFaults="False" />
          <serviceCredentials>
            <serviceCertificate findValue="localhost"
                                storeLocation="LocalMachine"
                                storeName="My"
                                x509FindType="FindBySubjectName" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Zobacz też