Partilhar via


<segurança> da <alfândegaBinding>

Especifica as opções de segurança para uma associação personalizada.

<configuração>
  <system.serviceModel>
    <Ligações>
      <customBinding>
        <vinculação>
          <Segurança >

Sintaxe

<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>

Atributos e Elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai

Atributos

Atributo Description
allowSerializedSigningTokenOnReply Opcional. Um valor booleano que especifica se um token serializado pode ser usado na resposta. O valor predefinido é false. Ao usar uma associação dupla, a configuração padrão para true e qualquer configuração feita será ignorada.
authenticationMode Opcional. Especifica o modo de autenticação usado entre o iniciador e o respondente. Veja abaixo todos os valores.

A predefinição é sspiNegotiated.
defaultAlgorithmSuite Opcional. Define os algoritmos de criptografia de mensagem e quebra automática de chave. Os algoritmos e os tamanhos das chaves são determinados pela SecurityAlgorithmSuite classe. Esses algoritmos são mapeados para aqueles especificados na especificação WS-SecurityPolicy (Security Policy Language).

Os valores possíveis são mostrados abaixo. O valor predefinido é Basic256.

Este atributo é usado quando se trabalha com uma plataforma diferente que opta por um conjunto de algoritmos diferentes do padrão. Você deve estar ciente dos pontos fortes e fracos dos algoritmos relevantes ao fazer modificações nessa configuração. Este atributo é do tipo SecurityAlgorithmSuite.
incluirCarimbo de data/hora Um valor booleano que especifica se os carimbos de data/hora são incluídos em cada mensagem. A predefinição é true.
keyEntropyMode Especifica a maneira como as chaves para proteger mensagens são calculadas. As chaves podem ser baseadas apenas no material da chave do cliente, apenas no material da chave de serviço ou em uma combinação de ambos. Os valores válidos são

- ClientEntropy: A chave de sessão é baseada em dados-chave fornecidos pelo cliente.
- ServerEntropy: A chave de sessão é baseada em dados de chave fornecidos pelo servidor.
- CombinedEntropy: A chave de sessão é baseada nos dados de chave fornecidos pelo cliente e serviço.

A predefinição é CombinedEntropy.

Este atributo é do tipo SecurityKeyEntropyMode.
messageProtectionOrder Define a ordem em que os algoritmos de segurança no nível da mensagem são aplicados à mensagem. Os valores válidos incluem o seguinte:

- SignBeforeEncrypt: Assine primeiro, depois criptografe.
- SignBeforeEncryptAndEncryptSignature: Assine primeiro, criptografe e depois criptografe a assinatura.
- EncryptBeforeSign: Criptografe primeiro e, em seguida, assine.

O valor padrão depende da versão do WS-Security que está sendo usada. O valor padrão é SignBeforeEncryptAndEncryptSignature ao usar o WS-Security 1.1. O valor padrão é SignBeforeEncrypt ao usar o WS-Security 1.0.

Este atributo é do tipo MessageProtectionOrder.
messageSecurityVersion Opcional. Define a versão do WS-Security que é usada. Os valores válidos incluem o seguinte:

- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
- WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

O padrão é WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 e pode ser expresso no XML como simplesmente Default. Este atributo é do tipo MessageSecurityVersion.
requireDerivedKeys Um valor booleano que especifica se as chaves podem ser derivadas das chaves de prova originais. A predefinição é true.
requireSecurityContextCancellation Opcional. Um valor booleano que especifica se o contexto de segurança deve ser cancelado e encerrado quando não for mais necessário. A predefinição é true.
requireSignatureConfirmation Opcional. Um valor booleano que especifica se a confirmação de assinatura WS-Security está habilitada. Quando definido como true, as assinaturas de mensagem são confirmadas pelo respondente. Quando a associação personalizada é configurada para certificados mútuos ou é configurada para usar tokens emitidos (associações WSS 1.1), esse atributo assume como truepadrão . Caso contrário, o padrão é false.

A confirmação de assinatura é usada para confirmar que o serviço está respondendo com pleno conhecimento de uma solicitação.
securityHeaderLayout Opcional. Especifica a ordenação dos elementos no cabeçalho de segurança. Os valores válidos são

- Strict: Os itens são adicionados ao cabeçalho de segurança de acordo com o princípio geral de "declarar antes de usar".
- Lax: Os itens são adicionados ao cabeçalho de segurança em qualquer ordem que confirme a segurança da mensagem WSS: SOAP.
- LaxWithTimestampFirst: Os itens são adicionados ao cabeçalho de segurança em qualquer ordem que confirme a segurança da mensagem WSS: SOAP, exceto que o primeiro elemento no cabeçalho de segurança deve ser um elemento wsse:Timestamp.
- LaxWithTimestampLast: Os itens são adicionados ao cabeçalho de segurança em qualquer ordem que confirme a segurança da mensagem WSS: SOAP, exceto que o último elemento no cabeçalho de segurança deve ser um elemento wsse:Timestamp.

A predefinição é Strict.

Este elemento é do tipo SecurityHeaderLayout.

atributo authenticationMode

valor Description
String AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

atributo defaultAlgorithm

valor Description
Básico128 Use criptografia Aes128, Sha1 para resumo de mensagens e Rsa-oaep-mgf1p para encapsulamento de chave.
Básico192 Use criptografia Aes192, Sha1 para resumo de mensagens, Rsa-oaep-mgf1p para quebra de chave.
Básico256 Use criptografia Aes256, Sha1 para resumo de mensagens, Rsa-oaep-mgf1p para quebra de chave.
Básico256Rsa15 Use Aes256 para criptografia de mensagens, Sha1 para resumo de mensagens e Rsa15 para quebra automática de chaves.
Básico192Rsa15 Use Aes192 para criptografia de mensagens, Sha1 para resumo de mensagens e Rsa15 para quebra automática de chaves.
TripleDes Use criptografia TripleDes, Sha1 para resumo de mensagens, Rsa-oaep-mgf1p para quebra de chave.
Básico128Rsa15 Use Aes128 para criptografia de mensagens, Sha1 para resumo de mensagens e Rsa15 para quebra automática de chaves.
TripleDesRsa15 Use criptografia TripleDes, Sha1 para resumo de mensagens e Rsa15 para encapsulamento de chaves.
Básico128Sha256 Use Aes128 para criptografia de mensagens, Sha256 para resumo de mensagens e Rsa-oaep-mgf1p para quebra automática de chaves.
Básico192Sha256 Use Aes192 para criptografia de mensagens, Sha256 para resumo de mensagens e Rsa-oaep-mgf1p para quebra de chave.
Básico256Sha256 Use Aes256 para criptografia de mensagens, Sha256 para resumo de mensagens e Rsa-oaep-mgf1p para quebra automática de chaves.
TripleDesSha256 Use TripleDes para criptografia de mensagens, Sha256 para resumo de mensagens e Rsa-oaep-mgf1p para quebra automática de chaves.
Básico128Sha256Rsa15 Use Aes128 para criptografia de mensagens, Sha256 para resumo de mensagens e Rsa15 para quebra de chave.
Básico192Sha256Rsa15 Use Aes192 para criptografia de mensagens, Sha256 para resumo de mensagens e Rsa15 para quebra de chave.
Básico256Sha256Rsa15 Use Aes256 para criptografia de mensagens, Sha256 para resumo de mensagens e Rsa15 para quebra automática de chaves.
TripleDesSha256Rsa15 Use TripleDes para criptografia de mensagens, Sha256 para resumo de mensagens e Rsa15 para quebra de chave.

Elementos Subordinados

Elemento Description
<issuedTokenParameters> Especifica um token emitido atual. Este elemento é do tipo IssuedTokenParametersElement.
<localClientSettings> Especifica as configurações de segurança de um cliente local para essa associação. Este elemento é do tipo LocalClientSecuritySettingsElement.
<localServiceSettings> Especifica as configurações de segurança de um serviço local para essa associação. Este elemento é do tipo LocalServiceSecuritySettingsElement.
<secureConversationBootstrap> Especifica os valores padrão usados para iniciar um serviço de conversação seguro.

Elementos Principais

Elemento Description
<vinculação> Define todos os recursos de vinculação da associação personalizada.

Observações

Para obter mais informações sobre como usar esse elemento, consulte SecurityBindingElement Authentication Modes e How to: Create a Custom Binding Using the SecurityBindingElement.

Exemplo

O exemplo a seguir demonstra como configurar a segurança usando uma associação personalizada. Ele mostra como usar uma associação personalizada para habilitar a segurança no nível da mensagem juntamente com um transporte seguro. Isso é útil quando um transporte seguro é necessário para transmitir as mensagens entre o cliente e o serviço e, simultaneamente, as mensagens devem ser seguras no nível da mensagem. Esta configuração não é suportada por associações fornecidas pelo sistema.

A configuração do serviço define uma ligação personalizada que suporta comunicação TCP protegida usando o protocolo TLS/SSL e segurança de mensagens do Windows. A associação personalizada usa um certificado de serviço para autenticar o serviço no nível de transporte e proteger as mensagens durante a transmissão entre o cliente e o serviço. Isso é feito pelo elemento de vinculação sslStreamSecurity>.< O certificado do serviço é configurado usando um comportamento de serviço.

Além disso, a associação personalizada usa segurança de mensagem com o tipo de credencial do Windows - esse é o tipo de credencial padrão. Isso é feito pelo elemento de vinculação de segurança . O cliente e o serviço são autenticados usando segurança no nível da mensagem se o mecanismo de autenticação Kerberos estiver disponível. Se o mecanismo de autenticação Kerberos não estiver disponível, a autenticação NTLM será usada. NTLM autentica o cliente para o serviço, mas não autentica o serviço para o cliente. O elemento de vinculação de segurança é configurado para usar SecureConversation authenticationType, o que resulta na criação de uma sessão de segurança no cliente e no serviço. Isso é necessário para permitir que o contrato duplex do serviço funcione. Para obter mais informações sobre como executar este exemplo, consulte Segurança de vinculação personalizada.

<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>

Consulte também