Authentifizierung – C# Beispiele
In diesem Artikel finden Sie ein einfaches Beispiel dafür, wie Sie einen benutzerdefinierten Nachrichten-Handler für eine Webanforderung mit kennwortbasierten Authentifizierungsschemata wie Basic, Digest, NTLM und Kerberos erstellen.
Bei der Authentifizierung wird festgestellt, ob ein Client das Recht hat, auf eine Ressource zuzugreifen. Das HTTP-Protokoll unterstützt die Authentifizierung als Mittel zur Aushandlung des Zugangs zu einer geschützten Ressource. Zunächst werden die Anmeldedaten des Benutzers (Benutzername und Kennwort) überprüft. Wenn beide korrekt sind, kann der Benutzer auf das System zugreifen. Mehrere Authentifizierungsverfahren für HTTP werden hier kurz beschrieben: Basisauthentifizierung, Digest, NTLM und Kerberos.
Erstellen eines Message Handlers für HTTP Basic Authentication
Basic Authentication ist eine Methode, mit der ein HTTP-Benutzer-Agent (z. B. ein Webbrowser) bei einer Anfrage einen Benutzernamen und ein Kennwort angeben muss. Lassen Sie uns einen benutzerdefinierten Handler erstellen, den Sie für Basic Authentication verwenden können. Führen Sie die nächsten Schritte aus:
- Verwenden Sie den erforderlichen Namespace, d. h. Aspose.Html.Net.
- Definieren Sie Ihre eigene
CredentialHandler
-Klasse, die von der MessageHandler-Klasse abgeleitet wird. - Überschreiben Sie die Methode Invoke(), um das Verhalten des benutzerdefinierten Nachrichten-Handlers zu implementieren.
Der folgende Codeausschnitt zeigt, wie ein CredentialHandler
für den Zugriff auf eine entfernte Quelle mit Autorisierung über HTTP Basic Authentication erstellt wird:
1// Use CredentialHandler for basic authentication
2
3// This message handler used basic autentifications request
4public class CredentialHandler : MessageHandler
5{
6 // Override the Invoke() method
7 public override void Invoke(INetworkOperationContext context)
8 {
9 context.Request.Credentials = new NetworkCredential("username", "securelystoredpassword");
10 context.Request.PreAuthenticate = true;
11
12 Next(context);
13 }
14}
Es übergibt NetworkCredential an ein Web-Request-Objekt, das es zur Authentifizierung von Anfragen an einen Internet-Server verwendet.
Hinzufügen des CredentialHandlers zur Pipeline
Das Schlüsselkonzept der Arbeit von Message-Handlern besteht darin, sie miteinander zu verketten. Wir haben den CredentialHandler
erstellt und sollten ihn der Pipeline hinzufügen, um das Beispiel der HTTP Basic Authentication zu implementieren. Betrachten wir das folgende C#-Beispiel:
1// Authenticate and load protected HTML with custom configuration using C#
2
3// Create an instance of the Configuration class
4using Configuration configuration = new Configuration();
5
6// Add the CredentialHandler to the chain of existing message handlers
7INetworkService service = configuration.GetService<INetworkService>();
8MessageHandlerCollection handlers = service.MessageHandlers;
9handlers.Insert(0, new CredentialHandler());
10
11// Initialize an HTML document with specified configuration
12using HTMLDocument document = new HTMLDocument("https://httpbin.org/basic-auth/username/securelystoredpassword", configuration);
Der Konstruktor Configuration() initialisiert eine Instanz der Klasse Configuration. Nachdem die Konfiguration erstellt wurde, werden die Methoden GetService<INetworkService>()
und MessageHandlers.Insert()
aufgerufen. Die Insert()-Methode fügt den CredentialHandler
an erster Stelle in die Sammlung der Message-Handler ein. Verwenden Sie den
HTMLDocument(url, configuration
) Konstruktor, um ein HTML Dokument zu initialisieren und das Beispiel für HTTP Basic Authentication zu implementieren.
Authentifizierungsschemata
Grundlegende Authentifizierung
Die Basisauthentifizierung ist eine Standardauthentifizierungsmethode, die von HTTP-Servern und fast allen Webbrowsern unterstützt wird und sich daher hervorragend als Zugangskontrollmethode eignet.
Ein schwerwiegender Nachteil der Basisauthentifizierung ist jedoch, dass der Benutzername und das Kennwort für den Client in Base64-kodiertem Klartext übertragen werden. Base64 ist keine Form der Verschlüsselung und sollte so behandelt werden, als würden der Benutzername und das Kennwort im Klartext übertragen. Wenn eine Ressource geschützt werden muss, wird daher dringend empfohlen, ein anderes Authentifizierungsschema als Basic Authentication zu verwenden.
Auszug
Die Digest-Authentifizierung ist eine Authentifizierungsmethode, die ein Webserver verwenden kann, um Anmeldedaten wie einen Benutzernamen oder ein Passwort mit dem Webbrowser des Benutzers auszuhandeln. Sie soll die Basisauthentifizierung ersetzen. Digest wendet eine Hash-Funktion auf den Benutzernamen und das Kennwort an, bevor sie über das Netzwerk gesendet werden. Das Hashing der Daten erschwert den Diebstahl und die Wiederverwendung der Benutzerdaten bei diesem Authentifizierungsverfahren. Es kann verwendet werden, um die Identität eines Benutzers zu überprüfen, bevor sensible Informationen wie der Transaktionsverlauf beim Online-Banking gesendet werden.
NTLM
Die NTLM-Authentifizierung (New Technology LAN Manager) ist ein Challenge-Response-Verfahren, das eine sicherere Version der Digest-Authentifizierung darstellt. NTLM verwendet Windows-Anmeldeinformationen zur Umwandlung der Anfragedaten anstelle eines unverschlüsselten Benutzernamens und Kennworts. Die NTLM-Authentifizierung erfordert mehrere Austauschvorgänge zwischen Client und Server. Der Server und alle zwischengeschalteten Proxys müssen dauerhafte Verbindungen aufrechterhalten, damit die Authentifizierung erfolgreich abgeschlossen werden kann.
Kerberos
Kerberos ist ein Authentifizierungsprotokoll für Computernetze. Es wurde entwickelt, um eine starke Authentifizierung für Client/Server-Anfragen mit Hilfe der Kryptographie mit geheimen Schlüsseln zu ermöglichen. Es wurde vom MIT als Lösung für diese Netzwerksicherheitsprobleme entwickelt. Das Kerberos-Protokoll gilt als sicher. Es ist seit Jahrzehnten weit verbreitet und hat sich als sicherer Mechanismus für die Benutzerauthentifizierung bewährt. Kerberos verwendet starke Kryptographie, um sensible Daten zu schützen.
Der Name Kerberos ist der griechischen Mythologie entnommen. Kerberos war ein dreiköpfiger Hund, der die Pforten des Hades bewachte. Die drei Köpfe des Kerberos-Protokolls stehen für den Client, die Netzwerkressource und das Key Distribution Center (KDC), einen vertrauenswürdigen Kerberos-Authentifizierungsdienst eines Dritten.
Sie können die vollständigen Beispiele und Datendateien von GitHub herunterladen.