Internetauthentifizierung

Die System.Net-Klassen unterstützen eine Vielzahl von Client-Authentifizierungsmechanismen, einschließlich folgender Standardmethoden zur Internetauthentifizierung: Basic, Digest, Negotiate, NTLM, die Kerberos-Authentifizierung und benutzerdefinierte Methoden, die Sie erstellen können.

Anmeldeinformationen werden in den NetworkCredential- und CredentialCache-Klassen gespeichert, die die ICredentials-Schnittstelle implementieren. Wenn eine dieser Klassen nach Anmeldeinformationen abgefragt wird, gibt sie eine Instanz der Klasse NetworkCredential zurück. Der Authentifizierungsvorgang wird durch die AuthenticationManager-Klasse verwaltet, und der tatsächliche Authentifizierungsprozess wird von einer Authentifizierungsmodulklasse ausgeführt, die die IAuthenticationModule-Schnittstelle implementiert. Sie müssen ein benutzerdefiniertes Authentifizierungsmodul mit dem AuthenticationManager registrieren, bevor dieses verwendet werden kann. Module für Basic-, Digest-, Negotiate-, NTLM- und Kerberos-Authentifizierungsmethoden werden standardmäßig registriert.

NetworkCredential speichert eine Reihe von Anmeldeinformationen durch eine einzelne Internetressource, die von einer URI identifiziert wird. Diese werden als Antwort auf jeden Aufruf der GetCredential-Methode zurückgegeben. Die NetworkCredential-Klasse wird üblicherweise von Anwendungen verwendet, die auf eine begrenzte Anzahl von Internetressourcen zugreifen oder von Anwendungen, die in allen Fällen dieselbe Reihe von Anmeldeinformationen verwenden.

Die CredentialCache-Klasse speichert eine Sammlung von Anmeldeinformationen für verschiedene Webressourcen. Wenn die GetCredential-Methode aufgerufen wird, gibt CredentialCache die richtige Reihe von Anmeldeinformationen zurück. Dies wird durch die URI der Webressource und das angeforderte Authentifizierungsschema bestimmt. Anwendungen, die eine Vielzahl von Internetressourcen mit verschiedenen Authentifizierungsschemas verwenden, profitieren von der Anwendung der CredentialCache-Klasse, da diese alle Anmeldeinformationen speichert und auf Anforderung bereitstellt.

Wenn eine Internetressource die Authentifizierung anfordert, sendet die WebRequest.GetResponse-Methode den WebRequest zusammen mit der Anforderung für Anmeldeinformationen an den AuthenticationManager. Die Anforderung wird dann gemäß dem folgenden Prozess authentifiziert:

  1. Der AuthenticationManager ruft die Authenticate-Methode auf jedem der registrierten Authentifizierungsmodule in der Reihenfolge auf, in der sie registriert wurden. Der AuthenticationManager verwendet das erste Modul, das nicht NULL zurückgibt, um den Authentifizierungsprozess durchzuführen. Die Einzelheiten des Prozesses unterscheiden sich je nach Typ der beteiligten Authentifizierungsmodule.

  2. Wenn der Authentifizierungsprozess abgeschlossen ist, gibt das Authentifizierungsmodul Authorization an WebRequest zurück, das die Informationen enthält, die für den Zugriff auf die Internetressource benötigt werden.

Einige Authentifizierungsschemas können einen Benutzer authentifizieren, ohne zuvor eine Anforderung für eine Ressource durchzuführen. Eine Anwendung kann Zeit sparen, indem der Benutzer mit der Ressource präauthentifiziert wird. So wird mindestens ein Roundtrip zum Server vermieden. Sie können die Authentifizierung auch während des Programmstarts durchführen, um später besser auf den Benutzer reagieren zu können. Authentifizierungsschemas, die die Präauthentifizierung verwenden können, legen die PreAuthenticate-Eigenschaft auf TRUE fest.

Siehe auch