Compartilhar via


<segurança> de <customBinding>

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

<configuration>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <binding>
          <security>

Syntax

<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 os atributos, os elementos filho e os elementos pai

Atributos

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

O padrão é sspiNegotiated.
defaultAlgorithmSuite Opcional. Define a criptografia de mensagem e os algoritmos de encapsulamento de chave. Os algoritmos e tamanhos de chave são determinados pela classe SecurityAlgorithmSuite. Esses algoritmos são mapeados para aqueles existentes na especificação WS-SecurityPolicy (Linguagem de Política de Segurança).

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

Esse atributo é usado ao trabalhar com outra plataforma que opte por um conjunto de algoritmos diferente do padrão. Você deve estar ciente dos pontos fortes e fracos dos algoritmos relevantes ao fazer modificações nessa configuração. Esse atributo é do tipo SecurityAlgorithmSuite.
includeTimestamp Valor booliano que especifica se carimbos de data/hora serão incluídos em cada mensagem. O padrão é true.
keyEntropyMode Especifica como são computadas as chaves de proteção das mensagens. 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 da sessão é baseada em dados de chave fornecidos pelo cliente.
- ServerEntropy: a chave da sessão é baseada em dados de chave fornecidos pelo servidor.
- CombinedEntropy: a chave da sessão é baseada em dados de chave fornecidos pelo cliente e pelo serviço.

O padrão é CombinedEntropy.

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

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

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

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

– WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
– WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
– WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

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

A confirmação da assinatura é usada para confirmar que o serviço está respondendo em plena conscientização de uma solicitação.
securityHeaderLayout Opcional. Especifica a ordem dos elementos no cabeçalho de segurança. Os valores válidos são

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

O padrão é Strict.

Esse elemento é do tipo SecurityHeaderLayout.

Atributo authenticationMode

Valor Descrição
String AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

Atributo defaultAlgorithm

Valor Descrição
Basic128 Usa criptografia Aes128, Sha1 para resumo da mensagem e Rsa-oaep-mgf1p para encapsulamento de chave.
Basic192 Usa criptografia Aes192, Sha1 para resumo da mensagem e Rsa-oaep-mgf1p para encapsulamento de chave.
Basic256 Usa criptografia Aes256, Sha1 para resumo da mensagem e Rsa-oaep-mgf1p para encapsulamento de chave.
Basic256Rsa15 Usa Aes256 para criptografia de mensagens, Sha1 para resumo da mensagem e Rsa15 para encapsulamento de chave.
Basic192Rsa15 Usa Aes192 para criptografia de mensagens, Sha1 para resumo da mensagem e Rsa15 para encapsulamento de chave.
TripleDes Use criptografia TripleDes, Sha1 para resumo da mensagem e Rsa-oaep-mgf1p para encapsulamento de chave.
Basic128Rsa15 Usa Aes128 para criptografia de mensagens, Sha1 para resumo da mensagem e Rsa15 para encapsulamento de chave.
TripleDesRsa15 Use criptografia TripleDes, Sha1 para resumo da mensagem e Rsa15 para encapsulamento de chave.
Basic128Sha256 Usa Aes128 para criptografia de mensagens, Sha256 para resumo da mensagem e Rsa-oaep-mgf1p para encapsulamento de chave.
Basic192Sha256 Usa Aes192 para criptografia de mensagens, Sha256 para resumo da mensagem e Rsa-oaep-mgf1p para encapsulamento de chave.
Basic256Sha256 Usa Aes256 para criptografia de mensagens, Sha256 para resumo da mensagem e Rsa-oaep-mgf1p para encapsulamento de chave.
TripleDesSha256 Use TripleDes para criptografia de mensagens, Sha256 para resumo da mensagem e Rsa-oaep-mgf1p para encapsulamento de chave.
Basic128Sha256Rsa15 Usa Aes128 para criptografia de mensagens, Sha256 para resumo da mensagem e Rsa15 para encapsulamento de chave.
Basic192Sha256Rsa15 Usa Aes192 para criptografia de mensagens, Sha256 para resumo da mensagem e Rsa15 para encapsulamento de chave.
Basic256Sha256Rsa15 Usa Aes256 para criptografia de mensagens, Sha256 para resumo da mensagem e Rsa15 para encapsulamento de chave.
TripleDesSha256Rsa15 Use TripleDes para criptografia de mensagens, Sha256 para resumo da mensagem e Rsa15 para encapsulamento de chave.

Elementos filho

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

Elementos pai

Elemento Descrição
<binding> Define todas as funcionalidades de associação da associação personalizada.

Comentários

Para obter mais informações sobre como usar esse elemento, confira Modos de autenticação de SecurityBindingElement e Como criar uma associação personalizada utilizando o 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 junto 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 precisam estar seguras no nível da mensagem. Essa configuração não é compatível com associações fornecidas pelo sistema.

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

Além disso, a associação personalizada usa a segurança da mensagem com o tipo de credencial do Windows, e esse é o tipo de credencial padrão. Isso é feito pelo elemento de associação security. O cliente e o serviço serão autenticados usando a 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. O NTLM autentica o cliente no serviço, mas não autentica o serviço para o cliente. O elemento de associação security é 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 o funcionamento do contrato duplex do serviço. Para obter mais informações sobre como executar esse exemplo, confira Segurança de associaçã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>

Confira também