<security> di <customBinding>

Specifica le opzioni di protezione per un'associazione personalizzata.

<system.serviceModel>
  <bindings>
    <associazionePersonalizzata>
      <associazione>
        <security> di <customBinding>

<security 
   allowSerializedSigningTokenOnReply="Boolean"
   authenticationMode="AuthenticationMode"
      defaultAlgorithmSuite="SecurityAlgorithmSuite"
   includeTimestamp="Boolean"
      requireDerivedKeys="Boolean"
   keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy" 
messageProtectionOrder="SignBeforeEncrypt/SignBeforeEncryptAndEncryptSignature/EncryptBeforeSign"
      messageSecurityVersion="WSSecurityJan2004/WSSecurityXXX2005"
   requireDerivedKeys="Boolean"
   requireSecurityContextCancellation="Boolean"
   requireSignatureConfirmation="Boolean"
      securityHeaderLayout=
              "Strict/Lax/LaxTimestampFirst/LaxTimestampLast"
   includeTimestamp="Boolean">
   <issuedTokenParameters />
   <localClientSettings />
   <localServiceSettings />
   <secureConversationBootstrap />
</security>

Attributi ed elementi

Attributi

Attributo Descrizione

allowSerializedSigningTokenOnReply

Facoltativo. Valore booleano che specifica se è possibile utilizzare un token serializzato nella risposta.

authenticationMode

Facoltativo. Specifica la modalità di autenticazione utilizzata tra l'iniziatore e il risponditore. Di seguito sono riportati tutti i valori.

L'impostazione predefinita è 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 stabiliti nelle specifiche del linguaggio dei criteri di protezione (WS-SecurityPolicy).

I valori possibili sono riportati di seguito. L'impostazione predefinita è Basic128.

Questo attributo viene utilizzato con una piattaforma differente che utilizza un insieme 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. L'impostazione predefinita è Aes256.

includeTimestamp

Valore booleano che specifica se in ogni messaggio vengono inclusi gli indicatori di data e ora. L'impostazione predefinita è true.

keyEntropyMode

Specifica la modalità di calcolo delle chiavi per la protezione 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 della sessione è basata su dati chiave forniti dal client.
  • ServerEntropy: La chiave della sessione è basata su dati chiave forniti dal server.
  • CombinedEntropy: La chiave della sessione è basata sui dati chiave forniti dal client e dal servizio.

L'impostazione predefinita è CombinedEntropy.

L'attributo è di tipo SecurityKeyEntropyMode.

messageProtectionOrder

Imposta l'ordine nel quale gli algoritmi di protezione a livello di messaggio vengono applicati al messaggio. Di seguito vengono elencati i valori validi:

  • SignBeforeEncrypt: prima firma, quindi crittografia.
  • SignBeforeEncryptAndEncryptSignature: prima firma, crittografia, quindi crittografia della firma.
  • EncryptBeforeSign: prima crittografia, quindi firma.

L'impostazione predefinita è SignBeforeEncrypt.

L'attributo è di tipo MessageProtectionOrder.

messageSecurityVersion

Facoltativo. Imposta la versione di WS-Security da utilizzare. Di seguito vengono elencati i valori validi:

  • 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. L'impostazione predefinita è true.

requireSecurityContextCancellation

Facoltativo. Valore booleano che specifica se il contesto di protezione deve essere annullato e terminato quando non è più necessario. L'impostazione predefinita è 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. L'impostazione predefinita è false.

La conferma della firma è utilizzata per confermare che la risposta del servizio sia completamente compatibile con una richiesta.

securityHeaderLayout

Facoltativo. Specifica l'ordine degli elementi nell'intestazione di protezione. I valori validi sono:

  • Strict: gli elementi vengono aggiunti all'intestazione di protezione secondo il principio generale di "dichiarazione prima dell'uso".
  • Lax: gli elementi vengono aggiunti all'intestazione di protezione in qualsiasi ordine conforme alla protezione WSS: messaggi SOAP.
  • LaxWithTimestampFirst: gli elementi vengono aggiunti all'intestazione di protezione in qualsiasi ordine conforme alla protezione WSS: messaggi SOAP, tranne che il primo elemento nell'intestazione di protezione deve essere un elemento wsse:Timestamp.
  • LaxWithTimestampLast: gli elementi vengono aggiunti all'intestazione di protezione in qualsiasi ordine conforme alla protezione WSS: messaggi SOAP, tranne che l'ultimo elemento nell'intestazione di protezione deve essere un elemento wsse:Timestamp.

L'impostazione predefinita è Strict.

L'elemento è di tipo SecurityHeaderLayout.

Elementi figlio

Elemento Descrizione

<parametriTokenEmesso>

Specifica un token corrente rilasciato. L'elemento è di tipo IssuedTokenParametersElement.

Elemento <localClientSettings>

Specifica le impostazioni di protezione di un client locale per questa associazione. L'elemento è di tipo LocalClientSecuritySettingsElement.

Elemento <localServiceSettings>

Specifica le impostazioni di protezione di un servizio locale per questa associazione. L'elemento è di tipo LocalServiceSecuritySettingsElement.

<bootstrapConversazioneProtetta>

Specifica i valori predefiniti utilizzati per iniziare un servizio di conversazione protetta.

Elementi padre

Elemento Descrizione

<associazione>

Definisce tutte le funzionalità di associazione dell'associazione personalizzata.

Osservazioni

Per ulteriori informazioni sull'utilizzo di questo elemento, vedere SecurityBindingElement Authentication Modes e How To: Create a Custom Binding Using the SecurityBindingElement.

Esempio

Nell'esempio seguente è dimostrato come configurare la protezione mediante un'associazione personalizzata. Viene mostrato come utilizzare un'associazione personalizzata per attivare la protezione 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 protezione dei messaggi di Windows. L'associazione personalizzata utilizza un certificato del servizio per autenticare il servizio sul livello del trasporto e proteggere i messaggi durante la trasmissione tra client e servizio. Ciò viene ottenuto dall'elemento di associazione <protezioneFlussoSsl>. Il certificato del servizio è configurato mediante un comportamento del servizio.

Inoltre, l'associazione personalizzata utilizza la protezione dei messaggi con tipo di credenziale Windows, che è il tipo di credenziale predefinito. Ciò viene ottenuto dall'elemento di associazione <security> di <customBinding>. Entrambi il client e il servizio vengono autenticati mediante la protezione a livello di messaggio se è disponibile il meccanismo di autenticazione Kerberos. Se il meccanismo di autenticazione Kerberos non è disponibile, viene utilizzata l'autenticazione NTLM. NTLM autentica il client con il servizio ma non autentica il servizio con il client. L'elemento di associazione <security> di <customBinding> è configurato per utilizzare come authenticationType SecureConversation, che comporta la creazione di una sessione di protezione nel client e nel servizio. Ciò è necessario per consentire il funzionamento del contratto duplex del servizio. Per ulteriori informazioni sull'esecuzione di questo esempio, vedere Custom Binding Security.

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

Vedere anche

Riferimenti

<associazionePersonalizzata>
SecurityElement
SecurityBindingElement
CustomBinding

Altre risorse

Windows Communication Foundation Bindings
Extending Bindings
Custom Bindings
How To: Create a Custom Binding Using the SecurityBindingElement
Custom Binding Security