<sicurezza> di <customBinding>

Specifica le opzioni di sicurezza di un'associazione personalizzata.

<Configurazione>
  <system.serviceModel>
    <bindings>
      <Custombinding>
        <Associazione>
          <Sicurezza>

Sintassi

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

Attributi ed elementi

Nelle sezioni seguenti vengono descritti attributi, elementi figlio ed elementi padre.

Attributi

Attributo Descrizione
allowSerializedSigningTokenOnReply Facoltativo. Valore booleano che specifica se è possibile usare un token serializzato nella risposta. Il valore predefinito è false. Se si usa un'associazione duplice, l'impostazione assume true come valore predefinito e qualsiasi impostazione effettuata sarà ignorata.
authenticationMode Facoltativo. Specifica la modalità di autenticazione usata tra l'iniziatore e il risponditore. Di seguito sono riportati tutti i valori.

Il valore predefinito è sspiNegotiated.
defaultAlgorithmSuite Facoltativo. Imposta la crittografia dei messaggi e gli algoritmi di incapsulamento della chiave. Gli algoritmi e le dimensioni della chiave sono determinati dalla classe SecurityAlgorithmSuite. Questi algoritmi sono associati a quelli indicati nella specifica Security Policy Language (WS-SecurityPolicy).

I valori possibili sono riportati di seguito. Il valore predefinito è Basic256.

Questo attributo viene usato con una piattaforma differente che usa un set di algoritmi diverso da quello predefinito. Quando si apportano modifiche a questa impostazione, è necessario essere consapevoli dei punti di forza e dei punti di debolezza degli algoritmi pertinenti. L'attributo è di tipo SecurityAlgorithmSuite.
includeTimestamp Valore booleano che specifica se in ogni messaggio vengono inclusi gli indicatori di data e ora. Il valore predefinito è true.
keyEntropyMode Specifica la modalità di calcolo delle chiavi per la sicurezza dei messaggi. Le chiavi possono essere basate solo sul materiale della chiave client, solo sul materiale della chiave del servizio o su una combinazione di entrambi. I valori validi sono:

- ClientEntropy: la chiave di sessione si basa sui dati chiave forniti dal client.
- ServerEntropy: la chiave di sessione si basa sui dati chiave forniti dal server.
- CombinedEntropy: la chiave di sessione si basa sui dati chiave forniti dal client e dal servizio.

Il valore predefinito è CombinedEntropy.

L'attributo è di tipo SecurityKeyEntropyMode.
messageProtectionOrder Imposta l'ordine nel quale gli algoritmi di sicurezza a livello di messaggio vengono applicati al messaggio. I valori validi sono i seguenti:

- SignBeforeEncrypt: firmare prima, quindi crittografare.
- SignBeforeEncryptAndEncryptSignature: firma prima, crittografa e quindi crittografa la firma.
- EncryptBeforeSign: crittografare prima, quindi firmare.

Il valore predefinito dipende dalla versione di WS-Security usata. Il valore predefinito è SignBeforeEncryptAndEncryptSignature quando si usa WS-Security 1,1. Il valore predefinito è SignBeforeEncrypt quando si usa WS-Security 1.0.

L'attributo è di tipo MessageProtectionOrder.
messageSecurityVersion Facoltativo. Imposta la versione di WS-Security da usare. I valori validi sono i seguenti:

- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
- WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

L'impostazione predefinita è WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 e può essere espressa in XML semplicemente come Default. L'attributo è di tipo MessageSecurityVersion.
requireDerivedKeys Valore booleano che specifica se le chiavi possono essere derivate dalle chiavi di prova originali. Il valore predefinito è true.
requireSecurityContextCancellation Facoltativo. Valore booleano che specifica se il contesto di sicurezza deve essere annullato e terminato quando non è più necessario. Il valore predefinito è true.
requireSignatureConfirmation Facoltativo. Valore booleano che specifica se la conferma della firma WS-Security è attivata. Quando è impostato su true, le firme del messaggio vengono confermate dal responder. Quando l'associazione personalizzata è configurata per i certificati reciproci o per usare token rilasciati (associazioni WSS 1.1), questo attributo assume true come valore predefinito. Diversamente, il valore predefinito è false.

La conferma della firma è usata per confermare che la risposta del servizio sia completamente compatibile con una richiesta.
securityHeaderLayout Facoltativo. Specifica l'ordine degli elementi nell'intestazione di sicurezza. I valori validi sono:

- Strict: gli elementi vengono aggiunti all'intestazione di sicurezza in base al principio generale di "dichiara prima dell'uso".
- Lax: gli elementi vengono aggiunti all'intestazione di sicurezza in qualsiasi ordine che conferma a WSS: sicurezza dei messaggi SOAP.
- LaxWithTimestampFirst: gli elementi vengono aggiunti all'intestazione di sicurezza in qualsiasi ordine che conferma a WSS: sicurezza dei messaggi SOAP, ad eccezione del fatto che il primo elemento nell'intestazione di sicurezza deve essere un elemento wsse:Timestamp.
- LaxWithTimestampLast: gli elementi vengono aggiunti all'intestazione di sicurezza in qualsiasi ordine che conferma a WSS: sicurezza dei messaggi SOAP, ad eccezione del fatto che l'ultimo elemento nell'intestazione di sicurezza deve essere un elemento wsse:Timestamp.

Il valore predefinito è Strict.

L'elemento è di tipo SecurityHeaderLayout.

Attributo authenticationMode

Valore Descrizione
Stringa AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

Attributo defaultAlgorithm

Valore Descrizione
Basic128 Usa crittografia Aes128, Sha1 per il digest del messaggio e Rsa-oaep-mgf1p per l'incapsulamento della chiave.
Basic192 Usa crittografia Aes192, Sha1 per il digest del messaggio e Rsa-oaep-mgf1p per l'incapsulamento della chiave.
Basic256 Usa crittografia Aes256, Sha1 per il digest del messaggio e Rsa-oaep-mgf1p per l'incapsulamento della chiave.
Basic256Rsa15 Usa Aes256 per la crittografia del messaggio, Sha1 per il digest del messaggio e Rsa15 per l'incapsulamento della chiave.
Basic192Rsa15 Usa Aes192 per la crittografia del messaggio, Sha1 per il digest del messaggio e Rsa15 per l'incapsulamento della chiave.
TripleDes Usa crittografia TripleDes, Sha1 per il digest del messaggio e Rsa-oaep-mgf1p per l'incapsulamento della chiave.
Basic128Rsa15 Usa crittografia Aes128, Sha1 per il digest del messaggio e Rsa15 per l'incapsulamento della chiave.
TripleDesRsa15 Usa crittografia TripleDes, Sha1 per il digest del messaggio e Rsa15 per l'incapsulamento della chiave.
Basic128Sha256 Usare Aes128 per la crittografia dei messaggi, Sha256 per il digest del messaggio e Rsa-oaep-mgf1p per l'incapsulamento della chiave.
Basic192Sha256 Usa Aes192 per la crittografia del messaggio, Sha256 per il digest del messaggio e Rsa-oaep-mgf1p per l'incapsulamento della chiave.
Basic256Sha256 Usa crittografia Aes256, Sha256 per il digest del messaggio e Rsa-oaep-mgf1p per l'incapsulamento della chiave.
TripleDesSha256 Usa TripleDes per la crittografia del messaggio, Sha256 per il digest del messaggio e Rsa-oaep-mgf1p per l'incapsulamento della chiave.
Basic128Sha256Rsa15 Usa Aes128 per la crittografia del messaggio, Sha256 per il digest del messaggio e Rsa15 per l'incapsulamento della chiave.
Basic192Sha256Rsa15 Usa Aes192 per la crittografia del messaggio, Sha256 per il digest del messaggio e Rsa15 per l'incapsulamento della chiave.
Basic256Sha256Rsa15 Usa Aes256 per la crittografia del messaggio, Sha256 per il digest del messaggio e Rsa15 per l'incapsulamento della chiave.
TripleDesSha256Rsa15 Usa TripleDes per la crittografia del messaggio, Sha256 per il digest del messaggio e Rsa15 per l'incapsulamento della chiave.

Elementi figlio

Elemento Descrizione
<issuedTokenParameters> Specifica un token corrente rilasciato. L'elemento è di tipo IssuedTokenParametersElement.
<localClient Impostazioni> Specifica le impostazioni di sicurezza di un client locale per questa associazione. L'elemento è di tipo LocalClientSecuritySettingsElement.
<localService Impostazioni> Specifica le impostazioni di sicurezza di un servizio locale per questa associazione. L'elemento è di tipo LocalServiceSecuritySettingsElement.
<secureConversationBootstrap> Specifica i valori predefiniti usati per iniziare un servizio di conversazione protetta.

Elementi padre

Elemento Descrizione
<Associazione> Definisce tutte le funzionalità di associazione dell'associazione personalizzata.

Osservazioni:

Per altre informazioni sull'uso di questo elemento, vedere SecurityBindingElement Authentication Modes e Procedura: Creare un'associazione personalizzata tramite SecurityBindingElement.

Esempio

Nell'esempio seguente è dimostrato come configurare la sicurezza mediante un'associazione personalizzata. Viene mostrato come usare un'associazione personalizzata per abilitare la sicurezza a livello di messaggio insieme con un trasporto sicuro. Questo è utile quando è necessario un trasporto protetto per trasmettere i messaggi tra client e servizio e simultaneamente i messaggi devono essere protetti a livello di messaggio. Questa configurazione non è supportata dalle associazioni fornite dal sistema.

La configurazione del servizio definisce un'associazione personalizzato che supporta la comunicazione TCP protetta mediante il protocollo TLS/SSL e la sicurezza dei messaggi di Windows. L'associazione personalizzata usa un certificato del servizio per autenticare il servizio sul livello del trasporto e proteggere i messaggi durante la trasmissione tra client e servizio. Questa operazione viene eseguita dall'elemento <di associazione sslStreamSecurity> . Il certificato del servizio è configurato mediante un comportamento del servizio.

L'associazione personalizzata usa inoltre la sicurezza dei messaggi con tipo di credenziale di Windows, che è il tipo di credenziale predefinito. Questa operazione viene eseguita dall'elemento di associazione di sicurezza . Il client e il servizio vengono autenticati mediante la sicurezza a livello di messaggio se il meccanismo di autenticazione Kerberos è disponibile. Se il meccanismo di autenticazione Kerberos non è disponibile, viene usata l'autenticazione NTLM. NTLM autentica il client con il servizio, ma non autentica il servizio con il client. L'elemento di associazione di sicurezza è configurato per l'uso SecureConversation di authenticationType, che comporta la creazione di una sessione di sicurezza sia nel client che nel servizio. Questa operazione è necessaria per consentire il funzionamento del contratto duplex del servizio. Per altre informazioni sull'esecuzione di questo esempio, vedere Sicurezza dell'associazione personalizzata.

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

Vedi anche