<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 true padrã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>