Sécurité de message avec un client de type Nom d'utilisateur
L'illustration suivante présente un service Windows Communication Foundation (WCF) et le client sécurisé à l'aide de la sécurité au niveau du message. Le service est authentifié à l'aide d'un certificat X.509. Le client s'authentifie à l'aide d'un nom d'utilisateur et d'un mot de passe.
Pour obtenir un exemple d'application, consultez Message Security User Name.
Caractéristique | Description |
---|---|
Mode de sécurité |
Message |
Interopérabilité |
Windows Communication Foundation (WCF) uniquement |
Authentification (serveur) |
La négociation initiale requiert l'authentification du serveur |
Authentification (client) |
Nom d'utilisateur/mot de passe |
Intégrité |
Oui, à l'aide du contexte de sécurité partagé |
Confidentialité |
Oui, à l'aide du contexte de sécurité partagé |
Transport |
HTTP |
Liaison |
Service
La configuration et le code suivants sont destinés à s'exécuter indépendamment. Effectuez l'une des opérations suivantes :
- Créez un service autonome à l'aide du code, sans utiliser la configuration.
- Créez un service à l'aide de la configuration fournie, mais ne définissez pas de point de terminaison.
Code
Le code suivant indique comment créer un point de terminaison de service qui utilise la sécurité de message.
Configuration
La configuration suivante peut être utilisée à la place du code :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceCredentialsBehavior">
<serviceCredentials>
<serviceCertificate findValue="Contoso.com"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="ServiceCredentialsBehavior"
name="ServiceModel.Calculator">
<endpoint address="https://localhost/Calculator"
binding="wsHttpBinding"
bindingConfiguration="MessageAndUserName"
name="SecuredByTransportEndpoint"
contract="ServiceModel.ICalculator" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="MessageAndUserName">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client />
</system.serviceModel>
</configuration>
Client
Code
Le code suivant crée le client. La liaison est définie au mode de sécurité au niveau du message, et le type d'informations d'identification du client a la valeur UserName. Le nom d'utilisateur et le mot de passe peuvent uniquement être spécifiés à l'aide du code (cela n'est pas configurable). Le code permettant de retourner le nom d'utilisateur et le mot de passe n'est pas indiqué dans ce cas car il doit être exécuté au niveau de l'application. Par exemple, utilisez une boîte de dialogue Windows Forms pour demander les données à l'utilisateur.
Configuration
Le code suivant configure le client. La liaison est définie au mode de sécurité au niveau du message, et le type d'informations d'identification du client a la valeur UserName. Le nom d'utilisateur et le mot de passe peuvent uniquement être spécifiés à l'aide du code (cela n'est pas configurable).
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_ICalculator" >
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://machineName/Calculator"
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_ICalculator"
contract="ICalculator"
name="WSHttpBinding_ICalculator">
<identity>
<dns value ="Contoso.com" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
Voir aussi
Concepts
Vue d'ensemble de la sécurité
Identité du service et authentification