Modes d'authentification SecurityBindingElement
Windows Communication Foundation (WCF) fournit plusieurs modes par lesquels les clients et services s'authentifient les uns 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 Comment : 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
Ajoutez customBinding Element à l'élément <bindings>.
Ajoutez un élément enfant <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 affecte AnonymousForCertificate 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.
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 affecter AnonymousForCertificate à l'attribut authenticationMode de l'élément <security>.
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 AnonymousForSslNegotiated à l'attribut authenticationMode.
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 CertificateOverTransport à l'attribut authenticationMode.
IssuedToken
Avec ce mode d'authentification, le client ne s'authentifie pas auprès du service, en tant que tel, mais présente à la place un jeton émis par un service d'émission de jeton de sécurité et prouve qu'il connaît 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 IssuedToken à l'attribut authenticationMode.
IssuedTokenForCertificate
Avec ce mode d'authentification, le client ne s'authentifie pas auprès du service, en tant que tel, mais présente à la place un jeton émis par un service d'émission de jeton de sécurité et prouve qu'il connaît une clé partagée. Le jeton émis 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 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 IssuedTokenForCertificate à l'attribut authenticationMode.
IssuedTokenForSslNegotiated
Avec ce mode d'authentification, le client ne s'authentifie pas auprès du service, en tant que tel, mais présente à la place un jeton émis par un service d'émission de jeton de sécurité et prouve qu'il connaît une clé partagée. Le jeton émis 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. L'élément de liaison de sécurité est un SymmetricSecurityBindingElement retourné par la méthode CreateIssuedTokenForSslBindingElement. Vous pouvez également affecter IssuedTokenForSslnegotiated à l'attribut authenticationMode.
IssuedTokenOverTransport
Avec ce mode d'authentification, le client n'est pas authentifié auprès du service, mais présente à la place un jeton émis par un service d'émission de jeton de sécurité et prouve qu'il connaît une clé partagée. Le jeton émis 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 CreateIssuedTokenOverTransportBindingElement. Vous pouvez également affecter IssuedTokenOverTransport à l'attribut authenticationMode.
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 Kerberos à l'attribut authenticationMode.
Remarque : |
---|
Pour utiliser ce mode d'authentification, le compte de service doit être associé à un SPN (Service Principal Name, nom principal de 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 bon SPN dans l'élément <servicePrincipalName>, ou utiliser le constructeur EndpointAddress. Pour plus d'informations, consultez Identité du service et authentification. |
Remarque : |
---|
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 KerberosOverTransport à l'attribut authenticationMode.
Remarque : |
---|
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 bon SPN 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 MutualCertificate à l'attribut authenticationMode.
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 MutualCertificateDuplex à l'attribut authenticationMode.
MutalSslNegotiation
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 MutualSslNegotiated à l'attribut authenticationMode.
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 SecureConversation à l'attribut authenticationMode.
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 SspiNegotiated à l'attribut authenticationMode.
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 SspiNegotiatedOverTransport à l'attribut authenticationMode.
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 UserNameForCertificate à l'attribut authenticationMode.
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 UserNameForSslNegotiated à l'attribut authenticationMode.
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 UserNameOverTransport à l'attribut authenticationMode.
Voir aussi
Tâches
Comment : créer un SecurityBindingElement pour un mode d'authentification spécifié