<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:
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:
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:
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:
Il valore predefinito è Strict. Questo elemento è di tipo SecurityHeaderLayout. |
Elementi figlio
Elemento | Descrizione |
---|---|
Specifica un token corrente rilasciato. L'elemento è di tipo IssuedTokenParametersElement. |
|
Specifica le impostazioni di sicurezza di un client locale per questa associazione. L'elemento è di tipo LocalClientSecuritySettingsElement. |
|
Specifica le impostazioni di sicurezza di un servizio locale per questa associazione. L'elemento è di tipo LocalServiceSecuritySettingsElement. |
|
Specifica i valori predefiniti utilizzati per iniziare un servizio di conversazione protetta. |
Elementi padre
Elemento | Descrizione |
---|---|
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