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