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
Pour l’élément <bindings>, ajoutez un <customBinding>.
En tant qu’élément enfant, ajoutez un élément <binding> à l’élément
<customBinding>
.Ajoutez un élément
<security>
à l'élément<binding>
.Affectez l'une des valeurs décrites ci- dessous à l'attribut
authenticationMode
. Par exemple, le code suivant affecteAnonymousForCertificate
au mode.<bindings> <customBinding> <binding name="SecureCustomBinding"> <security authenticationMode ="AnonymousForCertificate" /> </binding> </customBinding> </bindings>
Pour définir le mode par programme
Indiquez l’un des types de retour suivants : SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement ou SecurityBindingElement.
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()
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
.