Gewusst wie: Konfigurieren eines XML-Webdiensts zur Windows-Authentifizierung

Code Example

Gehen Sie wie im Folgenden beschrieben vor, um Clientanmeldeinformationen zu konfigurieren und mit allen Arten der Windows-Authentifizierung außer der Authentifizierung mit Clientzertifikaten an einen Webdienst zu übergeben. Befolgen Sie in diesem Fall die Anweisungen im Abschnitt "Authentifizierung mit Clientzertifikaten".

So konfigurieren Sie einen Webdienst für die Windows-Authentifizierung

  1. Konfigurieren Sie den Webdienst für die Verwendung der Windows-Authentifizierung mithilfe von IIS.

    IIS ermöglicht es Ihnen, Sicherheit auf Verzeichnis- oder Dateiebene anzugeben. Wenn Sie die Sicherheit für einen Webdienst auf Dateibasis angeben möchten, legen Sie die Berechtigungen für den Webdienst in der ASMX-Datei in IIS fest. Die ASMX-Datei ist der Einstiegspunkt in den Webdienst. Einzelheiten dazu finden Sie in der IIS-Dokumentation.

  2. Ändern Sie die Konfigurationsdatei, um die Windows-Authentifizierung anzugeben.

    Legen Sie das mode-Attribut des authentication-XML-Elements in einer Konfigurationsdatei auf "Windows" fest. Im folgenden Codebeispiel wird eine Konfigurationsdatei so geändert, dass die Windows-Authentifizierung verwendet wird.

    // Fragment of a Web.config file.
    <authentication mode= "Windows">
    </authentication> 
    

So übergeben Sie Clientanmeldeinformationen mit der Windows-Authentifizierung an einen Webdienst

  1. Erstellen Sie eine Instanz der Proxyklasse für den Webdienst. Wenn keine Proxyklasse generiert wurde, finden Sie Einzelheiten unter Erstellen eines XML-Webdienstproxys.

  2. Erstellen Sie eine neue Instanz der NetworkCredential-Klasse, und legen Sie die Eigenschaften UserName, Password und Domain fest.

  3. Erstellen Sie eine neue Instanz von CredentialCache.

  4. Fügen Sie CredentialCache das NetworkCredential mithilfe der Add-Methode von CredentialCache hinzu.

  5. Weisen Sie der Credentials-Eigenschaft der Proxyklasse die Instanz von CredentialCache zu.

    Wenn integrierte Windows-Authentifizierung verwendet wird, müssen Sie die Credentials-Eigenschaft auf System.Net.CredentialCache.DefaultCredentials festlegen.

    Wenn die Credentials-Eigenschaft auf DefaultCredentials festgelegt wird, handelt der Client je nach der Konfiguration des Servers mit dem Server die Kerberos- und/oder NTLM-Authentifizierung aus.

  6. Im folgenden Codebeispiel werden die mit Windows-Authentifizierung an eine Webdienstmethode übergebenen Clientanmeldeinformationen festgelegt.

Authentifizierung mit Clientzertifikaten

Gehen Sie wie im Folgenden beschrieben vor, um Clientanmeldeinformationen zu konfigurieren und mit dem Formular für Clientanmeldeinformationen an einen Webdienst zu übergeben.

So konfigurieren Sie einen Webdienst zur Authentifizierung mit Clientzertifikaten

  1. Die folgende Liste bietet eine Übersicht darüber, wie IIS für die Authentifizierung von Clients mithilfe von Clientzertifikaten konfiguriert wird. Einzelheiten dazu finden Sie in der IIS-Dokumentation.

  2. Installieren Sie SSL.

  3. Konfigurieren Sie die Webanwendung so, dass sie Clientzertifikate akzeptiert.

  4. Ändern Sie die Konfigurationsdatei so, dass die Windows-Authentifizierung für den Webdienst angegeben wird.

    Legen Sie das mode-Attribut des authentication-XML-Elements in einer Konfigurationsdatei auf "Windows" fest. Im folgenden Codebeispiel wird eine Konfigurationsdatei so geändert, dass die Windows-Authentifizierung verwendet wird.

    // Fragment of a Web.config file.
    <authentication mode= "Windows">
    </authentication>
    

So übergeben Sie Clientanmeldeinformationen mithilfe der Authentifizierung mit Clientzertifikaten an einen Webdienst

  1. Erstellen Sie eine Instanz der Proxyklasse für den Webdienst. Wenn keine Proxyklasse generiert wurde, finden Sie Einzelheiten unter Erstellen eines XML-Webdienstproxys.

  2. Erstellen Sie eine neue Instanz vom X509Certificate.

  3. Rufen Sie die CreateFromCertFile-Methode auf, um das Clientzertifikat aus einer Datei zu laden.

    Ein Client kann eine Clientzertifikatsdatei von einer vertrauenswürdigen Zertifizierungsstelle abrufen. Einzelheiten dazu finden Sie in der IIS-Dokumentation.

  4. Fügen Sie X509Certificate der ClientCertificates-ClientCertificates-Auflistung der Proxyklasse hinzu.

    Im folgenden Codebeispiel wird veranschaulicht, wie ein Webdienstclient seine Anmeldeinformationen mit einem Clientzertifikat übergibt. Ein vom Webserver ausgegebenes Clientzertifikat wird mit der CreateFromCertFile-Methode aus einer Datei geladen und dann der ClientCertificates-Eigenschaft der Proxyklasse hinzugefügt.

    ' 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);
    

Beispiel

Wenn die Credentials-Eigenschaft auf System.Net.CredentialCache.DefaultCredentials festgelegt wird, handelt der Client je nach der Konfiguration des Servers mit dem Server die Kerberos- und/oder NTLM-Authentifizierung aus.

Im folgenden Codebeispiel werden die mit Windows-Authentifizierung an eine Webdienstmethode übergebenen Clientanmeldeinformationen festgelegt.

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);
  }
}

Siehe auch

Aufgaben

Gewusst wie: Ausführen von benutzerdefinierter Authentifizierung mit SOAP-Headern

Referenz

NetworkCredential
CredentialCache
X509Certificate

Konzepte

Sichern von mit ASP.NET erstellten XML-Webdiensten

Weitere Ressourcen

ASP.NET Web Application Security
XML-Webdienste, die ASP.NET verwenden

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.