Modalità di autenticazione di SecurityBindingElement

Windows Communication Foundation (WCF) offre diverse modalità per l'autenticazione reciproca di client e servizi. È possibile creare elementi di associazione di sicurezza 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 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

  1. All'elemento di <binding>, aggiungere un <customBinding>.

  2. Come elemento figlio, aggiungere un elemento di <binding> all'elemento <customBinding>.

  3. Aggiungere un elemento <security> all'elemento <binding>.

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

  1. Determinare il tipo restituito, che può essere uno dei seguenti: SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement o SecurityBindingElement.

  2. Chiamare il metodo statico appropriato della classe SecurityBindingElement. Ad esempio, nel codice seguente viene chiamato il metodo CreateAnonymousForCertificateBindingElement.

    SymmetricSecurityBindingElement b =
        SecurityBindingElement.
        CreateAnonymousForCertificateBindingElement();
    
    Dim b As SymmetricSecurityBindingElement = _
    SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
    
  3. Utilizzare l'elemento di associazione per creare l'associazione personalizzata. Per altre informazioni, vedere Binding personalizzati.

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 sicurezza è 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 sicurezza è 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 sicurezza è 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, si autentica presso un servizio token di sicurezza e riceve un token SAML che poi presenta al server per dimostrare la conoscenza di una chiave condivisa. Inoltre, anziché prevedere l'autenticazione del servizio presso il client, questa modalità ricorre al meccanismo seguente: il servizio token di sicurezza 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 sicurezza è 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, si autentica presso un servizio token di sicurezza e riceve un token SAML che poi presenta al server per dimostrare la conoscenza di una chiave condivisa. Il token emesso viene considerato a livello SOAP come un token di supporto di verifica dell'autenticità o un token che firma la firma del messaggio. Il client autentica il servizio tramite un certificato X.509. L'elemento di associazione di sicurezza è 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, si autentica presso un servizio token di sicurezza e riceve un token SAML che poi presenta al server per dimostrare la conoscenza di una chiave condivisa. Il token emesso viene considerato a livello SOAP come un token di supporto di verifica dell'autenticità o 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 sicurezza è 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, si autentica presso un servizio token di sicurezza e riceve un token SAML che poi presenta al server per dimostrare la conoscenza di una chiave condivisa. Il token emesso viene considerato a livello SOAP come un token di supporto di verifica dell'autenticità o 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 sicurezza è 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 usato per autenticare il server. L'elemento di associazione di sicurezza è 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 usare l'SPN corretto nell'elemento <servicePrincipalName> oppure usare il costruttore EndpointAddress. Per altre 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 sicurezza è 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 usare l'SPN corretto nell'elemento <servicePrincipalName> oppure usare il costruttore EndpointAddress. Per altre 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 sicurezza è 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.

MutualSslNegotiated

In questa modalità l'autenticazione del client e del servizio si basa sull'utilizzo di certificati X.509. L'elemento di associazione di sicurezza è 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 sicurezza è 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 sicurezza è 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 sicurezza è 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 client autentica il servizio tramite un certificato X.509. L'elemento di associazione di sicurezza è 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 sicurezza è 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 sicurezza è un elemento TransportSecurityBindingElement restituito dal metodo CreateUserNameOverTransportBindingElement. In alternativa, impostare l'attributo authenticationMode su UserNameOverTransport.

Vedi anche