Comment : configurer un service Web XML pour l'authentification Windows
Cette rubrique est spécifique à une technologie existante. Les services Web XML et les clients du service Web XML doivent à présent être créés à l'aide de Windows Communication Foundation.
Code Example
Suivez ces procédures pour configurer et passer des informations d'identification client à un service Web à l'aide de toutes les formes d'authentification Windows à l'exception des informations d'identification client. Pour ce cas, suivez les procédures de la section Authentification par certificat client.
Pour configurer un service Web pour l'authentification Windows
Configurez le service Web pour utiliser l'authentification Windows à l'aide d'IIS.
IIS vous permet de spécifier la sécurité au niveau du répertoire ou du fichier. Si vous souhaitez spécifier la sécurité pour un service Web au niveau d'un fichier, définissez les autorisations pour le service Web sur le fichier .asmx dans IIS. Le fichier .asmx est le point d'entrée dans le service Web. Pour plus d'informations, consultez la documentation IIS.
Modifiez le fichier de configuration pour spécifier l'authentification Windows.
Donnez à l'attribut mode de l'élément XML authentication d'un fichier de configuration la valeur "Windows". L'exemple de code suivant modifie un fichier de configuration pour utiliser l'authentification Windows.
// Fragment of a Web.config file. <authentication mode= "Windows"> </authentication>
Pour passer des informations d'identification client à un service Web à l'aide de l'authentification Windows
Créez une nouvelle instance de la classe proxy vers le service Web. Si aucune classe proxy n'a été générée, consultez Création d'un proxy de service Web XML pour plus de détails
Créez une nouvelle instance de la classe NetworkCredential et définissez les propriétés UserName, Password et Domain.
Créez une nouvelle instance de CredentialCache.
Ajoutez le NetworkCredential au CredentialCache à l'aide de la méthode Add de CredentialCache
Assignez l'instance de CredentialCache à la propriété Credentials de la classe proxy.
Si l'authentification Windows intégrée est utilisée, vous devez affecter à la propriété Credentials la valeur System.Net.CredentialCache.DefaultCredentials.
Lorsque la propriété Credentials a la valeur DefaultCredentials, le client négocie avec le serveur pour déterminer s'il faut utiliser l'authentification Kerberos et/ou NTLM selon la configuration du serveur.
L'exemple de code suivant définit les informations d'identification client passées à une méthode de service Web à l'aide de l'authentification Windows.
Authentification par certificat client
Suivez ces procédures pour configurer et passer des informations d'identification client à un service Web à l'aide de la forme d'authentification Windows Informations d'identification client.
Pour configurer un service Web pour l'authentification par certificat client
La liste suivante est récapitule comment configurer IIS pour authentifier des clients à l'aide de certificats clients. Pour plus d'informations, consultez la documentation IIS.
Installez SSL.
Configurez l'application Web pour accepter les certificats clients.
Modifiez le fichier de configuration pour spécifier l'authentification Windows pour le service Web.
Donnez à l'attribut mode de l'élément XML authentication d'un fichier de configuration la valeur "Windows". L'exemple de code suivant modifie un fichier de configuration pour utiliser l'authentification Windows.
// Fragment of a Web.config file. <authentication mode= "Windows"> </authentication>
Pour passer des informations d'identification client à un service Web à l'aide de l'authentification par certificat client
Créez une nouvelle instance de la classe proxy vers le service Web. Si aucune classe proxy n'a été générée, consultez Création d'un proxy de service Web XML pour plus de détails.
Créez une nouvelle instance du X509Certificate.
Appelez la méthode CreateFromCertFile pour charger le certificat client à partir d'un fichier.
Un client peut obtenir un fichier de certificat client auprès d'une autorité de certification approuvée. Pour plus d'informations, consultez la documentation IIS.
Ajoutez le X509Certificate à la collection ClientCertificates ClientCertificates de la classe proxy.
L'exemple de code suivant montre comment un client de service Web passe ses informations d'identification à l'aide d'un certificat client. Un certificat client émis par le serveur Web est chargé à partir d'un fichier avec la méthode CreateFromCertFile, puis ajouté à la propriété ClientCertificates de la classe proxy.
' Instantiate proxy class to a Bank Web service. Dim bank As BankSession = new BankSession() ' Load the client certificate from a file. Dim x509 As X509Certificate = X509Certificate.CreateFromCertFile("c:\user.cer") ' Add the client certificate to the ClientCertificates property ' of the proxy class. bank.ClientCertificates.Add(x509) ' Call the method on the proxy class, which requires authentication ' using client certificates. bank.Deposit(500)
// Instantiate proxy class to a Bank Web service. BankSession bank = new BankSession(); // Load the client certificate from a file. X509Certificate x509 = X509Certificate.CreateFromCertFile(@"c:\user.cer"); // Add the client certificate to the ClientCertificates property // of the proxy class. bank.ClientCertificates.Add(x509); // Call the method on the proxy class, which requires // authentication using client certificates. bank.Deposit(500);
Exemple
Lorsque la propriété Credentials a la valeur System.Net.CredentialCache.DefaultCredentials, le client négocie avec le serveur pour déterminer s'il faut utiliser l'authentification Kerberos et/ou NTLM selon la configuration du serveur.
L'exemple de code suivant définit les informations d'identification client passées à une méthode de service Web à l'aide de l'authentification Windows.
Imports System
Imports System.Web.Services.Protocols
Imports System.Net
Imports MyMath
Public Class Calculator
Public Shared Sub Main()
' Create a new instance of the proxy class to an
' Web service method.
Dim mathproxy As MyMath.Math = New MyMath.Math()
' Create a new instance of CredentialCache.
Dim mycredentialCache As CredentialCache = New CredentialCache()
' Create a new instance of NetworkCredential using the client
' credentials.
Dim credentials As NetworkCredential = New _ NetworkCredential(UserName,SecurelyStoredPasword,Domain)
' Add the NetworkCredential to the CredentialCache.
mycredentialCache.Add(New Uri(mathproxy.Url), "Basic", _ credentials)
' Add the CredentialCache to the proxy class credentials.
mathproxy.Credentials = mycredentialCache
' Call the method on the proxy class.
Dim result As Integer
result = mathproxy.Add(3,5)
End Sub
End Class
using System;
using System.Web.Services.Protocols;
using System.Net;
using MyMath;
public class Calculator
{
public static void Main()
{
// Create a new instance of the proxy class to an XML
// Web service method.
MyMath.Math math = new MyMath.Math();
// Create a new instance of CredentialCache.
CredentialCache credentialCache = new CredentialCache();
// Create a new instance of NetworkCredential using the client
// credentials.
NetworkCredential credentials = new
NetworkCredential(UserName,SecurelyStroredPassword,Domain);
// Add the NetworkCredential to the CredentialCache.
credentialCache.Add(new Uri(math.Url), "Basic", credentials);
// Add the CredentialCache to the proxy class credentials.
math.Credentials = credentialCache;
// Call the method on the proxy class.
int result = math.Add(3,5);
}
}
Voir aussi
Tâches
Comment : exécuter l'authentification personnalisée à l'aide d'en-têtes SOAP
Référence
NetworkCredential
CredentialCache
X509Certificate
Concepts
Sécurisation des services Web XML créés à l'aide d'ASP.NET
Autres ressources
ASP.NET Web Application Security
Services Web XML utilisant ASP.NET