Condividi tramite


<security> di <customBinding>

Specifica le opzioni di sicurezza di un'associazione personalizzata.

Gerarchia dello schema

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

Sintassi

<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

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

Attributi

Attributo Descrizione

allowSerializedSigningTokenOnReply

Facoltativo. Valore booleano che specifica se è possibile utilizzare un token serializzato nella risposta. Il valore predefinito è false. Se si utilizza un'associazione duplice, l'impostazione assume true come valore predefinito e qualsiasi impostazione effettuata sarà ignorata.

authenticationMode

Facoltativo. Specifica la modalità di autenticazione utilizzata 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 stabiliti nelle specifiche del linguaggio dei criteri di sicurezza (WS-SecurityPolicy).

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

Questo attributo viene utilizzato con una piattaforma differente che utilizza 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 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.

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

Il valore predefinito dipende dalla versione di WS-Security utilizzata. Il valore predefinito è SignBeforeEncryptAndEncryptSignature quando si utilizza WS-Security 1.1. Il valore predefinito è SignBeforeEncrypt quando si utilizza WS-Security 1.0.

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. 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 utilizzare token rilasciati (associazioni WSS 1.1), questo attributo assume true come valore predefinito. In caso contrario, il valore predefinito è 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 sicurezza. I valori validi sono:

  • Strict: gli elementi vengono aggiunti all'intestazione di sicurezza secondo il principio generale di "dichiarazione prima dell'uso".

  • Lax: gli elementi vengono aggiunti all'intestazione di sicurezza in qualsiasi ordine conforme alla sicurezza WSS: messaggi SOAP.

  • LaxWithTimestampFirst: gli elementi vengono aggiunti all'intestazione di sicurezza in qualsiasi ordine conforme alla sicurezza WSS: messaggi SOAP, tranne 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 conforme alla sicurezza WSS: messaggi SOAP, tranne che l'ultimo elemento nell'intestazione di sicurezza deve essere un elemento wsse:Timestamp.

Il valore predefinito è Strict.

Questo 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 sicurezza di un client locale per questa associazione. L'elemento è di tipo LocalClientSecuritySettingsElement.

Elemento <localServiceSettings>

Specifica le impostazioni di sicurezza 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

<binding>

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

Osservazioni

Per ulteriori informazioni su 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 sicurezza mediante un'associazione personalizzata. Viene mostrato come utilizzare 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 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 <sicurezzaFlussoSsl>. Il certificato del servizio è configurato mediante un comportamento del servizio.

Inoltre, l'associazione personalizzata utilizza la sicurezza 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 sicurezza 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 sicurezza 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

Riferimento

<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