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
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.
Ä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
Erstellen Sie eine Instanz der Proxyklasse für den Webdienst. Wenn keine Proxyklasse generiert wurde, finden Sie Einzelheiten unter Erstellen eines XML-Webdienstproxys.
Erstellen Sie eine neue Instanz der NetworkCredential-Klasse, und legen Sie die Eigenschaften UserName, Password und Domain fest.
Erstellen Sie eine neue Instanz von CredentialCache.
Fügen Sie CredentialCache das NetworkCredential mithilfe der Add-Methode von CredentialCache hinzu.
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.
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
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.
Installieren Sie SSL.
Konfigurieren Sie die Webanwendung so, dass sie Clientzertifikate akzeptiert.
Ä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
Erstellen Sie eine Instanz der Proxyklasse für den Webdienst. Wenn keine Proxyklasse generiert wurde, finden Sie Einzelheiten unter Erstellen eines XML-Webdienstproxys.
Erstellen Sie eine neue Instanz vom X509Certificate.
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.
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
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.