Partilhar via


<segurança> do <customBinding>

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

<configuração>
   <system.serviceModel>
     <Encadernações>
       <customBinding>
         <Encadernaçã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

Attributes

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

A predefinição é sspiNegotiated.
defaultAlgorithmSuite Opcional. Define os algoritmos de encriptação de mensagens e key-wrap. Os algoritmos e os tamanhos das chaves são determinados pela SecurityAlgorithmSuite classe. Estes algoritmos correspondem aos especificados na especificação da Linguagem de Política de Segurança (WS-SecurityPolicy).

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

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

- ClientEntropy: A chave de sessão baseia-se nos dados principais fornecidos pelo cliente.
- ServerEntropy: A chave da sessão baseia-se nos dados da chave fornecidos pelo servidor.
- CombinedEntropy: A chave de sessão baseia-se nos dados principais fornecidos pelo cliente e pelo serviço.

A predefinição é CombinedEntropy.

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

- SignBeforeEncrypt: Assina primeiro, depois encripta.
- SignBeforeEncryptAndEncryptSignature: Assinar primeiro, encriptar, depois encriptar a assinatura.
- EncryptBeforeSign: Encripta primeiro, depois assina.

O valor padrão depende da versão de WS-Security utilizada. O valor padrão é SignBeforeEncryptAndEncryptSignature quando se usa WS-Security 1.1. O valor padrão é SignBeforeEncrypt quando se usa 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 os seguintes:

- WSSecurity11WSTrustFever2005WSSecureConversationFever2005WSSecurityPolicy11
- WSSecurity10WSTrustFever2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFever2005WSSecureConversationFever2005WSSecurityPolicy11BasicSecurityProfile10

O padrão é WSSecurity11WSTrustFever2005WSSecureConversationFebruary2005WSSecurityPolicy11 e pode ser expresso no XML simplesmente Defaultcomo . Este atributo é do tipo MessageSecurityVersion.
requererChavesDerivadas Um valor booleano que especifica se as chaves podem ser derivadas das chaves de prova originais. A predefinição é true.
requerSegurançaContextoCancelamento Opcional. Um valor booleano que especifica se o contexto de segurança deve ser cancelado e terminado quando deixa de ser necessário. A predefinição é true.
exigeAssinaturaConfirmação Opcional. Um valor booleano que especifica se WS-Security confirmação de assinatura está ativada. Quando definido para true, as assinaturas da mensagem são confirmadas pelo respondente. Quando a ligação personalizada é configurada para certificados mútuos ou está configurada para usar tokens emitidos (vinculações WSS 1.1), este atributo é predefinido para true. Caso contrário, o padrão é false.

A confirmação de assinatura é usada para confirmar que o serviço responde com total conhecimento de um pedido.
securityHeaderLayout Opcional. Especifica a ordem 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 ser utilizado".
- 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 do cabeçalho de segurança deve ser um elemento wsse:Timestamp.
- LaxWithTimestampLast: Os itens são adicionados ao cabeçalho de segurança por qualquer ordem que confirme a segurança da Mensagem WSS: SOAP, exceto que o último elemento do cabeçalho de segurança deve ser um elemento wsse:Timestamp.

A predefinição é Strict.

Este elemento é do tipo SecurityHeaderLayout.

Atributo AuthenticationMode

Valor Description
Cordão AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

Atributo defaultAlgorithm

Valor Description
Basic128 Use encriptação Aes128, Sha1 para digest de mensagens e Rsa-oaep-mgf1p para key wrap.
Basic192 Use encriptação Aes192, Sha1 para digest de mensagens, Rsa-oaep-mgf1p para envolvimento de chaves.
Basic256 Usa encriptação Aes256, Sha1 para digestão de mensagens, Rsa-oaep-mgf1p para envolvimento de chaves.
Basic256Rsa15 Use o Aes256 para encriptação das mensagens, o Sha1 para o resumo das mensagens e o RSA15 para o keywrap.
Basic192Rsa15 Use o Aes192 para encriptação de mensagens, o Sha1 para digest da mensagem e o Rsa15 para o keywrap.
TripleDes Use encriptação TripleDes, Sha1 para digestão de mensagens, Rsa-oaep-mgf1p para envolvimento de chaves.
Basic128Rsa15 Use o Aes128 para encriptação de mensagens, o Sha1 para o digest da mensagem e o RSA15 para o keywrap.
TripleDesRsa15 Usa encriptação TripleDes, Sha1 para resumir mensagens e Rsa15 para keywrap.
Basic128Sha256 Use Aes128 para encriptação de mensagens, Sha256 para digest de mensagens e Rsa-oaep-mgf1p para keywrap.
Basic192Sha256 Use Aes192 para encriptação de mensagens, Sha256 para digest de mensagens e Rsa-oaep-mgf1p para envolvimento de chaves.
Basic256Sha256 Usa Aes256 para encriptação de mensagens, Sha256 para digest de mensagens e Rsa-oaep-mgf1p para key wrap.
TripleDesSha256 Use o TripleDes para encriptação das mensagens, o Sha256 para o resumo da mensagem e o Rsa-oaep-mgf1p para o encapsulamento de chaves.
Basic128Sha256Rsa15 Use Aes128 para encriptação de mensagens, Sha256 para digest de mensagens e Rsa15 para envolvimento de chaves.
Basic192Sha256Rsa15 Use Aes192 para encriptação de mensagens, Sha256 para digest de mensagens e Rsa15 para envolvimento de chaves.
Basic256Sha256Rsa15 Use Aes256 para encriptação de mensagens, Sha256 para digest de mensagens e Rsa15 para envolvimento de chaves.
TripleDesSha256Rsa15 Use o TripleDes para encriptação de mensagens, o Sha256 para o digest das mensagens e o Rsa15 para o keywrap.

Elementos filho

Elemento Description
<ParametrosTokens emitidos> Especifica um token emitido atualmente. Este elemento é do tipo IssuedTokenParametersElement.
<localClientSettings> Especifica as definições de segurança de um cliente local para esta ligação. Este elemento é do tipo LocalClientSecuritySettingsElement.
<localServiceSettings> Especifica as definições de segurança de um serviço local para esta ligação. Este elemento é do tipo LocalServiceSecuritySettingsElement.
<secureConversationBootstrap> Especifica os valores padrão usados para iniciar um serviço de conversa segura.

Elementos Principais

Elemento Description
<Encadernação> Define todas as capacidades de ligação da ligação personalizada.

Observações

Para mais informações sobre a utilização deste elemento, consulte SecurityBindingElement Authentication Modes e Como: Criar uma Ligação Personalizada Usando o SecurityBindingElement.

Example

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

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

Além disso, a ligação personalizada utiliza segurança de mensagens com o tipo de credencial do Windows – este é o tipo de credencial predefinido. Isto é conseguido pelo elemento de ligação de segurança . Tanto o cliente como o serviço são autenticados usando segurança ao nível da mensagem se existir um mecanismo de autenticação Kerberos disponível. Se o mecanismo de autenticação Kerberos não estiver disponível, é utilizada a autenticação NTLM. O NTLM autentica o cliente ao serviço, mas não autentica o serviço ao cliente. O elemento de ligação de segurança está configurado para usar SecureConversation authenticationType, o que resulta na criação de uma sessão de segurança tanto no cliente como no serviço. Isto é necessário para permitir que o contrato de duplex do serviço funcione. Para 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