Modes d'authentification SecurityBindingElement

Windows Communication Foundation (WCF) fournit plusieurs modes par lesquels les clients et services s’authentifient les uns avec les autres. Vous pouvez créer des éléments de liaison de sécurité pour ces modes d'authentification à l'aide des méthodes statiques sur la classe SecurityBindingElement ou via la configuration. Cette rubrique décrit brièvement les 18 modes d'authentification.

Pour obtenir un exemple d’utilisation de l’élément pour l’un des modes d’authentification, consultez Procédure : Créer un SecurityBindingElement pour un mode d’authentification spécifié.

Programmation de configuration de base

La procédure suivante décrit comment définir le mode d'authentification dans un fichier de configuration.

Pour définir le mode d'authentification dans la configuration

  1. Pour l’élément <bindings>, ajoutez un <customBinding>.

  2. En tant qu’élément enfant, ajoutez un élément <binding> à l’élément <customBinding>.

  3. Ajoutez un élément <security> à l'élément <binding>.

  4. Affectez l'une des valeurs décrites ci- dessous à l'attribut authenticationMode. Par exemple, le code suivant affecte AnonymousForCertificate au mode.

    <bindings>  
      <customBinding>  
        <binding name="SecureCustomBinding">  
         <security authenticationMode ="AnonymousForCertificate" />  
        </binding>  
      </customBinding>  
    </bindings>  
    

Pour définir le mode par programme

  1. Indiquez l’un des types de retour suivants : SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement ou SecurityBindingElement.

  2. Appelez la méthode statique appropriée de la classe SecurityBindingElement. Par exemple, le code suivant appelle la méthode CreateAnonymousForCertificateBindingElement.

    SymmetricSecurityBindingElement b =
        SecurityBindingElement.
        CreateAnonymousForCertificateBindingElement();
    
    Dim b As SymmetricSecurityBindingElement = _
    SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
    
  3. Utilisez l’élément de liaison pour créer la liaison personnalisée. Pour plus d’informations, consultez Liaisons personnalisées.

Descriptions des modes

AnonymousForCertificate

Avec ce mode d'authentification, le client est anonyme et le service est authentifié à l'aide d'un certificat X.509. L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateAnonymousForCertificateBindingElement. Vous pouvez également définir l’attribut authenticationMode de l’élément <security> sur AnonymousForCertificate.

AnonymousForSslNegotiated

Avec ce mode d'authentification, le client est anonyme et le service est authentifié à l'aide d'un certificat X.509 négocié au moment de l'exécution. L’élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateSslNegotiationBindingElement lorsqu’une valeur de false est passée pour le premier paramètre. Vous pouvez également affecter authenticationMode à l'attribut AnonymousForSslNegotiated.

CertificateOverTransport

Avec ce mode d'authentification, le client s'authentifie à l'aide d'un certificat X.509 qui apparaît au niveau de la couche SOAP sous forme d'un jeton de prise en charge d'endossement ; autrement dit, un jeton qui signe la signature de message. Le service est authentifié à l'aide d'un certificat X.509 au niveau de la couche de transport. L'élément de liaison de sécurité est un TransportSecurityBindingElement retourné par la méthode CreateCertificateOverTransportBindingElement. Vous pouvez également affecter authenticationMode à l'attribut CertificateOverTransport.

IssuedToken

Avec ce mode d'authentification, le client ne s'authentifie pas au service en tant que tel. Au lieu de cela, il s'authentifie à un service de jeton de sécurité et reçoit un jeton SAML, qu'il présente ensuite au serveur pour prouver sa connaissance d'une clé partagée. Le service n'est pas authentifié auprès du client, en tant que tel, mais le service d'émission de jeton de sécurité chiffre la clé partagée dans le cadre du jeton émis afin que seul le service puisse déchiffrer la clé. L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateIssuedTokenBindingElement. Vous pouvez également affecter authenticationMode à l'attribut IssuedToken.

IssuedTokenForCertificate

Avec ce mode d'authentification, le client ne s'authentifie pas au service en tant que tel. Au lieu de cela, il s'authentifie à un service de jeton de sécurité et reçoit un jeton SAML, qu'il présente ensuite au serveur pour prouver sa connaissance d'une clé partagée. Le jeton émis apparaît au niveau de la couche SOAP sous la forme d'un jeton de prise en charge d'endossement ou d'un jeton de porteur ; autrement dit, un jeton qui signe la signature de message. Le service s'authentifie auprès du client à l'aide d'un certificat X.509. L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateIssuedTokenForCertificateBindingElement. Vous pouvez également affecter authenticationMode à l'attribut IssuedTokenForCertificate.

IssuedTokenForSslNegotiated

Avec ce mode d'authentification, le client ne s'authentifie pas au service en tant que tel. Au lieu de cela, il s'authentifie à un service de jeton de sécurité et reçoit un jeton SAML, qu'il présente ensuite au serveur pour prouver sa connaissance d'une clé partagée. Le jeton émis apparaît au niveau de la couche SOAP sous la forme d'un jeton de prise en charge d'endossement ou d'un jeton de porteur ; autrement dit, un jeton qui signe la signature de message. Le service est authentifié à l'aide d'un certificat X.509. L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateIssuedTokenForSslBindingElement. Vous pouvez également affecter authenticationMode à l'attribut IssuedTokenForSslNegotiated.

IssuedTokenOverTransport

Avec ce mode d'authentification, le client ne s'authentifie pas au service en tant que tel. Au lieu de cela, il s'authentifie à un service de jeton de sécurité et reçoit un jeton SAML, qu'il présente ensuite au serveur pour prouver sa connaissance d'une clé partagée. Le jeton émis apparaît au niveau de la couche SOAP sous la forme d'un jeton de prise en charge d'endossement ou d'un jeton de porteur ; autrement dit, un jeton qui signe la signature de message. Le service est authentifié à l'aide d'un certificat X.509 au niveau de la couche de transport. L'élément de liaison de sécurité est un TransportSecurityBindingElement retourné par la méthode CreateIssuedTokenOverTransportBindingElement. Vous pouvez également affecter authenticationMode à l'attribut IssuedTokenOverTransport.

Kerberos

Avec ce mode d'authentification, le client s'authentifie auprès du service à l'aide d'un ticket Kerberos. Ce même ticket fournit également l'authentification de serveur. L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateKerberosBindingElement. Vous pouvez également affecter authenticationMode à l'attribut Kerberos.

Notes

Pour utiliser ce mode d'authentification, le compte de service doit être associé à un SPN (Service Principal Name, nom de principal du service). Pour ce faire, exécutez le service sous les comptes SERVICE RÉSEAU ou SYSTÈME LOCAL. Utilisez également l'outil SetSpn.exe pour créer un SPN pour le compte de service. Dans les deux cas, le client doit utiliser le SPN qui convient dans l’élément <servicePrincipalName>, ou utiliser le constructeur EndpointAddress. Pour plus d’informations, consultez Identité du service et authentification.

Notes

Lorsque le mode d'authentification Kerberos est utilisé, les niveaux d'emprunt d'identité Anonymous et Delegation ne sont pas pris en charge.

KerberosOverTransport

Avec ce mode d'authentification, le client s'authentifie auprès du service à l'aide d'un ticket Kerberos. Le jeton Kerberos apparaît au niveau de la couche SOAP sous forme d'un jeton de prise en charge d'endossement ; autrement dit, un jeton qui signe la signature de message. Le service est authentifié à l'aide d'un certificat X.509 au niveau de la couche de transport. L'élément de liaison de sécurité est un TransportSecurityBindingElement retourné par la méthode CreateKerberosOverTransportBindingElement. Vous pouvez également affecter authenticationMode à l'attribut KerberosOverTransport.

Notes

Pour utiliser ce mode d'authentification, le compte de service doit être associé à un SPN. Pour ce faire, exécutez le service sous les comptes SERVICE RÉSEAU ou SYSTÈME LOCAL. Utilisez également l'outil SetSpn.exe pour créer un SPN pour le compte de service. Dans les deux cas, le client doit utiliser le SPN qui convient dans l’élément <servicePrincipalName>, ou utiliser le constructeur EndpointAddress. Pour plus d’informations, consultez Identité du service et authentification.

MutualCertificate

Avec ce mode d'authentification, le client s'authentifie à l'aide d'un certificat X.509 qui apparaît au niveau de la couche SOAP sous forme d'un jeton de prise en charge d'endossement ; autrement dit, un jeton qui signe la signature de message. Le service est également authentifié à l'aide d'un certificat X.509. L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateMutualCertificateBindingElement. Vous pouvez également affecter authenticationMode à l'attribut MutualCertificate.

MutualCertificateDuplex

Avec ce mode d'authentification, le client s'authentifie à l'aide d'un certificat X.509 qui apparaît au niveau de la couche SOAP sous forme d'un jeton de prise en charge d'endossement ; autrement dit, un jeton qui signe la signature de message. Le service est également authentifié à l'aide d'un certificat X.509. La liaison est un AsymmetricSecurityBindingElement retourné par la méthode CreateMutualCertificateDuplexBindingElement. Vous pouvez également affecter authenticationMode à l'attribut MutualCertificateDuplex.

MutualSslNegotiated

Avec ce mode d'authentification, le client et le service s'authentifient à l'aide de certificats X.509. L’élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateSslNegotiationBindingElement lorsqu’une valeur de true est passée pour le premier paramètre. Vous pouvez également affecter authenticationMode à l'attribut MutualSslNegotiated.

SecureConversation

L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateSecureConversationBindingElement. Cette méthode prend SecurityBindingElement comme paramètre, qui est utilisé pendant l'initialisation pour établir la session sécurisée. Vous pouvez également affecter authenticationMode à l'attribut SecureConversation.

Si aucune liaison de démarrage n’est spécifiée, le mode d’authentification SspiNegotiated est utilisé pour le démarrage.

SspiNegotiation

Avec ce mode d'authentification, un protocole de négociation est utilisé pour effectuer l'authentification du client et du serveur. Kerberos est dans la mesure du possible utilisé, sinon c'est NTLM (NT LanMan). L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateSspiNegotiationBindingElement. Vous pouvez également affecter authenticationMode à l'attribut SspiNegotiated.

SspiNegotiatedOverTransport

Avec ce mode d'authentification, un protocole de négociation est utilisé pour effectuer l'authentification du client et du serveur. Le protocole Kerberos est dans la mesure du possible utilisé, sinon c'est NTLM. Le jeton résultant apparaît au niveau de la couche SOAP sous forme d'un jeton de prise en charge d'endossement ; autrement dit, un jeton qui signe la signature de message. Le service est en outre authentifié au niveau de la couche de transport par un certificat X.509. L'élément de liaison de sécurité est un TransportSecurityBindingElement retourné par la méthode CreateSspiNegotiationOverTransportBindingElement. Vous pouvez également affecter authenticationMode à l'attribut SspiNegotiatedOverTransport.

UserNameForCertificate

Avec ce mode d'authentification, le client s'authentifie auprès du service à l'aide d'un jeton de nom d'utilisateur qui apparaît au niveau de la couche SOAP sous forme d'un jeton de prise en charge signé ; autrement dit, un jeton signé par la signature de message. Le service s'authentifie auprès du client à l'aide d'un certificat X.509. L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateUserNameForCertificateBindingElement. Vous pouvez également affecter authenticationMode à l'attribut UserNameForCertificate.

Pour le mode d'authentification UserNameForCertificate, le client et le service doivent tous deux utiliser WS-Security 1.1.

UserNameForSslNegotiated

Avec ce mode d'authentification, le client s'authentifie à l'aide d'un jeton de nom d'utilisateur qui apparaît au niveau de la couche SOAP sous forme d'un jeton de prise en charge signé ; autrement dit, un jeton signé par la signature de message. Le service est authentifié à l'aide d'un certificat X.509. L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateUserNameForSslBindingElement. Vous pouvez également affecter authenticationMode à l'attribut UserNameForSslNegotiated.

UserNameOverTransport

Avec ce mode d'authentification, le client s'authentifie à l'aide d'un jeton de nom d'utilisateur qui apparaît au niveau de la couche SOAP sous forme d'un jeton de prise en charge signé ; autrement dit, un jeton signé par la signature de message. Le service est authentifié à l'aide d'un certificat X.509 au niveau de la couche de transport. L'élément de liaison de sécurité est un TransportSecurityBindingElement retourné par la méthode CreateUserNameOverTransportBindingElement. Vous pouvez également affecter authenticationMode à l'attribut UserNameOverTransport.

Voir aussi