Modalità di autenticazione di SecurityBindingElement
In Windows Communication Foundation (WCF) sono disponibili varie modalità per l'autenticazione reciproca di client e servizi. È possibile creare elementi di associazione di protezione per tali modalità di autenticazione utilizzando metodi statici sulla classe SecurityBindingElement o tramite configurazione. In questo argomento vengono brevemente descritte le 18 modalità di autenticazione.
Per un esempio di utilizzo dell'elemento per una delle modalità di autenticazione, vedere Procedura: creare un elemento SecurityBindingElement per una modalità di autenticazione specificata.
Programmazione della configurazione di base
Nella procedura seguente viene illustrato come impostare la modalità di autenticazione in un file di configurazione.
Per impostare la modalità di autenticazione nella configurazione
All'elemento <bindings> aggiungere un customBinding Element.
Come elemento figlio, aggiungere un elemento <binding> all'elemento <customBinding>.
Aggiungere un elemento <security> all'elemento <binding>.
Impostare l'attributo authenticationMode su uno dei valori descritti di seguito. Ad esempio, nel codice seguente la modalità viene impostata su AnonymousForCertificate.
<bindings> <customBinding> <binding name="SecureCustomBinding"> <security authenticationMode ="AnonymousForCertificate" /> </binding> </customBinding> </bindings>
Per impostare la modalità a livello di codice
Determinare il tipo restituito, che può essere uno dei seguenti: SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement o SecurityBindingElement.
Chiamare il metodo statico appropriato della classe SecurityBindingElement. Ad esempio, nel codice seguente viene chiamato il metodo CreateAnonymousForCertificateBindingElement.
Utilizzare l'elemento di associazione per creare l'associazione personalizzata. Per ulteriori informazioni, vedere Associazioni personalizzate.
Descrizione delle modalità
AnonymousForCertificate
In questa modalità di autenticazione il client è anonimo e il servizio viene autenticato utilizzando un certificato X.509. L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateAnonymousForCertificateBindingElement. In alternativa, impostare l'attributo authenticationMode dell'elemento <security> su AnonymousForCertificate.
AnonymousForSslNegotiated
In questa modalità di autenticazione il client è anonimo e il servizio viene autenticato utilizzando un certificato X.509 negoziato a runtime. L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateSslNegotiationBindingElement quando viene passato un valore false per il primo parametro. In alternativa, impostare l'attributo authenticationMode su AnonymousForSslNegotiated.
CertificateOverTransport
In questa modalità di autenticazione il client viene autenticato mediante un certificato X.509 che a livello SOAP viene considerato come un token di supporto di verifica dell'autenticità, ovvero un token che firma la firma del messaggio. Il servizio viene autenticato tramite un certificato X.509 a livello di trasporto. L'elemento di associazione di protezione è un elemento TransportSecurityBindingElement restituito dal metodo CreateCertificateOverTransportBindingElement. In alternativa, impostare l'attributo authenticationMode su CertificateOverTransport.
IssuedToken
In questa modalità di autenticazione il client, anziché autenticarsi presso il servizio, presenta un token emesso da un servizio token di protezione e dimostra di conoscere una chiave condivisa. Inoltre, anziché prevedere l'autenticazione del servizio presso il client, questa modalità ricorre al meccanismo seguente: il servizio token di protezione esegue la crittografia della chiave condivisa come parte del token emesso in modo che solo il servizio possa decifrare la chiave. L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateIssuedTokenBindingElement. In alternativa, impostare l'attributo authenticationMode su IssuedToken.
IssuedTokenForCertificate
In questa modalità di autenticazione il client, anziché autenticarsi presso il servizio, presenta un token emesso da un servizio token di protezione e dimostra di conoscere una chiave condivisa. Il token emesso viene considerato a livello SOAP come un token di supporto di verifica dell'autenticità, ovvero un token che firma la firma del messaggio. Il servizio viene autenticato presso il client tramite un certificato X.509. L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateIssuedTokenForCertificateBindingElement. In alternativa, impostare l'attributo authenticationMode su IssuedTokenForCertificate.
IssuedTokenForSslNegotiated
In questa modalità di autenticazione il client, anziché autenticarsi presso il servizio, presenta un token emesso da un servizio token di protezione e dimostra di conoscere una chiave condivisa. Il token emesso viene considerato a livello SOAP come un token di supporto di verifica dell'autenticità, ovvero un token che firma la firma del messaggio. Il servizio viene autenticato tramite l'uso di un certificato X.509. L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateIssuedTokenForSslBindingElement. In alternativa, impostare l'attributo authenticationMode su IssuedTokenForSslnegotiated.
IssuedTokenOverTransport
In questa modalità di autenticazione il client, anziché autenticarsi presso il servizio, presenta un token emesso da un servizio token di protezione e dimostra di conoscere una chiave condivisa. Il token emesso viene considerato a livello SOAP come un token di supporto di verifica dell'autenticità, ovvero un token che firma la firma del messaggio. Il servizio viene autenticato tramite un certificato X.509 a livello di trasporto. L'elemento di associazione di protezione è un elemento TransportSecurityBindingElement restituito dal metodo CreateIssuedTokenOverTransportBindingElement. In alternativa, impostare l'attributo authenticationMode su IssuedTokenOverTransport.
Kerberos
In questa modalità di autenticazione il client viene autenticato presso il servizio mediante un ticket Kerberos. Questo stesso ticket viene inoltre utilizzato per autenticare il server. L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateKerberosBindingElement. In alternativa, impostare l'attributo authenticationMode su Kerberos.
Nota
Per utilizzare questa modalità di autenticazione, l'account del servizio deve essere associato a un nome dell'entità servizio (SPN). A tale scopo, eseguire il servizio sotto l'account Servizio di rete o sotto l'account di sistema locale. In alternativa, utilizzare lo strumento SetSpn.exe per creare un SPN per l'account del servizio. In entrambi i casi, il client deve utilizzare l'SPN corretto nell'elemento <servicePrincipalName> o utilizzare il costruttore EndpointAddress. Per ulteriori informazioni, vedere Identità del servizio e autenticazione.
Nota
Quando si utilizza la modalità di autenticazione Kerberos, i livelli di rappresentazione Anonymous e Delegation non sono supportati.
KerberosOverTransport
In questa modalità di autenticazione il client viene autenticato presso il servizio mediante un ticket Kerberos. Il token Kerberos viene considerato a livello SOAP come un token di supporto di verifica dell'autenticità, ovvero un token che firma la firma del messaggio. Il servizio viene autenticato tramite un certificato X.509 a livello di trasporto. L'elemento di associazione di protezione è un elemento TransportSecurityBindingElement restituito dal metodo CreateKerberosOverTransportBindingElement. In alternativa, impostare l'attributo authenticationMode su KerberosOverTransport.
Nota
Per utilizzare questa modalità di autenticazione, l'account del servizio deve essere associato a un SPN. A tale scopo, eseguire il servizio sotto l'account Servizio di rete o sotto l'account di sistema locale. In alternativa, utilizzare lo strumento SetSpn.exe per creare un SPN per l'account del servizio. In entrambi i casi, il client deve utilizzare l'SPN corretto nell'elemento <servicePrincipalName> o utilizzare il costruttore EndpointAddress. Per ulteriori informazioni, vedere Identità del servizio e autenticazione.
MutualCertificate
In questa modalità di autenticazione il client viene autenticato mediante un certificato X.509 che a livello SOAP viene considerato come un token di supporto di verifica dell'autenticità, ovvero un token che firma la firma del messaggio. Anche il servizio viene autenticato tramite l'uso di un certificato X.509. L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateMutualCertificateBindingElement. In alternativa, impostare l'attributo authenticationMode su MutualCertificate.
MutualCertificateDuplex
In questa modalità di autenticazione il client viene autenticato mediante un certificato X.509 che a livello SOAP viene considerato come un token di supporto di verifica dell'autenticità, ovvero un token che firma la firma del messaggio. Anche il servizio viene autenticato tramite l'uso di un certificato X.509. L'associazione è un elemento AsymmetricSecurityBindingElement restituito dal metodo CreateMutualCertificateDuplexBindingElement. In alternativa, impostare l'attributo authenticationMode su MutualCertificateDuplex.
MutualSslNegotiation
In questa modalità l'autenticazione del client e del servizio si basa sull'utilizzo di certificati X.509. L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateSslNegotiationBindingElement quando viene passato un valore true per il primo parametro. In alternativa, impostare l'attributo authenticationMode su MutualSslNegotiated.
SecureConversation
L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateSecureConversationBindingElement. Questo metodo considera un elemento SecurityBindingElement come parametro, che viene utilizzato durante l'inizializzazione per stabilire la sessione protetta. In alternativa, impostare l'attributo authenticationMode su SecureConversation.
Se non è specificata nessuna associazione del bootstrap, per il bootstratp viene utilizzata la modalità di autenticazione SspiNegotiated.
SspiNegotiation
Questa modalità di autenticazione prevede l'utilizzo di un protocollo di negoziazione per eseguire l'autenticazione di client e server. Se possibile, viene utilizzato il protocollo Kerberos. In caso contrario viene utilizzato il protocollo NT LanMan (NTLM). L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateSspiNegotiationBindingElement. In alternativa, impostare l'attributo authenticationMode su SspiNegotiated.
SspiNegotiatedOverTransport
Questa modalità di autenticazione prevede l'utilizzo di un protocollo di negoziazione per eseguire l'autenticazione di client e server. Se possibile, viene utilizzato il protocollo Kerberos. In caso contrario, viene utilizzato il protocollo NTLM. Il token risultante viene considerato a livello SOAP come un token di supporto di verifica dell'autenticità, ovvero un token che firma la firma del messaggio. Il servizio viene autenticato ulteriormente a livello di trasporto tramite un certificato X.509. L'elemento di associazione di protezione è un elemento TransportSecurityBindingElement restituito dal metodo CreateSspiNegotiationOverTransportBindingElement. In alternativa, impostare l'attributo authenticationMode su SspiNegotiatedOverTransport.
UserNameForCertificate
In questa modalità di autenticazione il client viene autenticato presso il servizio mediante un token nome utente che a livello SOAP viene considerato come un token di supporto firmato, ovvero un token firmato dalla firma del messaggio. Il servizio viene autenticato presso il client tramite un certificato X.509. L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateUserNameForCertificateBindingElement. In alternativa, impostare l'attributo authenticationMode su UserNameForCertificate.
Per la modalità di autenticazione UserNameForCertificate, il client e il servizio devono entrambi utilizzare WS-Security 1.1.
UserNameForSslNegotiated
In questa modalità di autenticazione il client viene autenticato mediante un token nome utente che a livello SOAP viene considerato come un token di supporto firmato, ovvero un token firmato dalla firma del messaggio. Il servizio viene autenticato tramite l'uso di un certificato X.509. L'elemento di associazione di protezione è un elemento SymmetricSecurityBindingElement restituito dal metodo CreateUserNameForSslBindingElement. In alternativa, impostare l'attributo authenticationMode su UserNameForSslNegotiated.
UserNameOverTransport
In questa modalità di autenticazione il client viene autenticato mediante un token nome utente che a livello SOAP viene considerato come un token di supporto firmato, ovvero un token firmato dalla firma del messaggio. Il servizio viene autenticato tramite un certificato X.509 a livello di trasporto. L'elemento di associazione di protezione è un elemento TransportSecurityBindingElement restituito dal metodo CreateUserNameOverTransportBindingElement. In alternativa, impostare l'attributo authenticationMode su UserNameOverTransport.
Vedere anche
Attività
Procedura: creare un elemento SecurityBindingElement per una modalità di autenticazione specificata