Share via


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

  1. 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.

  2. 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

  1. 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

  2. Créez une nouvelle instance de la classe NetworkCredential et définissez les propriétés UserName, Password et Domain.

  3. Créez une nouvelle instance de CredentialCache.

  4. Ajoutez le NetworkCredential au CredentialCache à l'aide de la méthode Add de CredentialCache

  5. 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.

  6. 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

  1. 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.

  2. Installez SSL.

  3. Configurez l'application Web pour accepter les certificats clients.

  4. 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

  1. 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.

  2. Créez une nouvelle instance du X509Certificate.

  3. 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.

  4. 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