In der heutigen IT-orientierten Wirtschaft werden Web-APIs zunehmend weltweit genutzt. Sie haben wahrscheinlich selbst apIs verbraucht oder erstellt. APIs verarbeiten enorme Datenmengen – eines der hauptwichtigsten Anliegen, die Softwareservice-Organisation speziell sucht, um diese Daten zu sichern. Die Idee ist, dass Daten stabil und gesichert sein sollten und nur von beabsichtigten Benutzern abgerufen werden können. Zeit, Geschwindigkeit und Leistung sind auch für die APIs wichtig. Hier in diesem Artikel werden wir verschiedene API-Authentifizierungs- und Autorisierungsmethoden besprechen, die von IT-Organisationen auf der ganzen Welt weit verbreitet sind.

 

Authentifizierung vs. Autorisierung

Wenn Sie jemals an einer API gearbeitet haben, werden immer nur Autorisierungsheader und keine Authentifizierungsheader angezeigt. Haben Sie sich jemals gefragt, warum? Verwenden Sie einfach ein beliebiges Netzwerk-Sniffing-Tool wie Fiddler / Wireshark oder verwenden Sie ein API-Testtool und überprüfen Sie die API Ihrer Anwendung. Unabhängig davon, ob die Header oder der Text einer API angezeigt werden, wird Ihre API-Anforderung immer autorisierungssucht. Bevor wir also erklären, warum APIs nur über Autorisierung und nicht über Authentifizierung verfügen, sollten wir zunächst den Unterschied zwischen Authentifizierung und Autorisierung erklären.

 

Authentifizierung

Die Authentifizierung ist nichts anderes als die Validierung eines Benutzers, wenn er die richtige Person für die Verwendung dieses Dienstes ist. Lassen Sie uns es mit einem einfachen Beispiel näher erläutern. Nehmen wir an, Sie besuchen mit Ihrer Familie ein Restaurant in Ihrer Stadt. Sie öffnen die Restauranttür und werden vom Manager begrüßt. Aber Sie wollen nicht in einem öffentlichen Restaurant im Restaurant sitzen, Sie wollen in einem privaten Zimmer mit der Familie sitzen und Sie müssen eine Reservierung dafür haben. Sie lassen den Manager wissen und sie bestätigen, dass Sie eine Reservierung haben, so dass Sie im privaten RestaurantBereich für Familien reserviert sitzen können. Also, das ist, was wir als Authentifizierung genannt. Der Restaurantleiter hat Ihnen erlaubt, mit Ihrer Familie an einem privaten Ort mit einer gültigen Reservierung zu sitzen. Wir können sagen, dass die Reservierung als Authentifizierungsschlüssel bezeichnet wird.

 

Autorisierung

Jetzt sind Sie im privaten Zimmer erlaubt und Sie können die Dienste für private Diner reserviert, etc. nutzen. Sie sind berechtigt, all dies zu tun, aber wenn Sie in die Küche des Restaurants gehen und ihren Kühlschrank öffnen, können sie Ihnen sagen, dass Sie in diesem Bereich nicht erlaubt sind. Dies wird also Autorisierung genannt. So dürfen Sie betreten, aber nach dem Betreten des Restaurants sind Sie nicht berechtigt, in einige Bereiche zu gehen und nicht berechtigt, auf einen anderen Bereich zuzugreifen. Das ist also die Autorisierung.

Wenn es jetzt um eine Website geht, kann jeder eine öffentliche Website-Anmeldeseite aufrufen. So wie jeder in ein Restaurant eintreten kann. Niemand wird dich aufhalten. Wenn Sie sich mit Ihrem Website-Benutzernamen und – Passwort anmelden, sind Sie authentifiziert und können die Website betreten. Genauso wie Sie über eine Reservierung auf einen reservierten privaten Tisch in einem Restaurant zugegriffen haben. Aber dann nach der Eingabe und nach der Authentifizierung, können Sie auf einige Abschnitte zugreifen, aber Sie können möglicherweise nicht auf einige andere Abschnitte zugreifen, die wie Admin-Abschnitte der Website sind. Dies ist also ein sehr grundlegender Unterschied zwischen Authentifizierung und Autorisierung.

Nun zurück zu unserer Frage. Wir sehen immer Autorisierung in einer API, warum es so? Wenn Sie sich die API ansehen, zeigt sie auf einen Endpunkt, an dem diese Adresse auf eine bestimmte Funktion oder Ressource in der Anwendung verweist. Wir können beispielsweise ein Modul auf dem Back-End der Anwendung sagen. Wenn Sie tatsächlich versuchen, auf eine bestimmte Ressource allein in der Anwendung zuzugreifen, ist es besser, sie als Autorisierung für Sie aufzurufen, obwohl es eine Authentifizierung zum Überprüfen Ihrer Identität gibt. Der erste Schritt ist immer die Authentifizierung.

 

Typen von HTTP-Authentifizierungen

Da wir den Unterschied zwischen Authentifizierung und Autorisierung behandelt haben, werden wir nun verschiedene Typen API-Authentifizierungen besprechen. API-Authentifizierungsmethoden werden je nach verwendeter Technik variiert. Authentifizierungen sind sehr wichtig, da sie direkt mit Ihrer Systemsicherheit zusammenhängen. Aus diesem Grund wird immer die HTTP-Authentifizierung in jedem System priorität.

Wir werden fünf Hauptmechanismen zum Hinzufügen von Sicherheit zu einer API hervorheben: Basic, API Key, Bearer, OAuth1.0/OAuth 2.0 und OpenID connect. Wir identifizieren, was sie tun, wie sie funktionieren, und Vor- und Nachteile jedes Ansatzes. Schließlich werden wir Auslastungstests einer API demonstrieren, die eine Authentifizierung mit LoadViewerfordert.

 

Standardauthentifizierung

Die HTTP-Basisauthentifizierung wird heutzutage von der IT-Branche nur noch selten verwendet, da sie sehr leicht gehackt werden kann, aber dies ist die am einfachsten zu implementierende Methode. APIs senden einen Benutzernamen und ein Kennwort entlang des Textkörpers. Die Anmeldeinformationen werden mit einer Verschlüsselungsmethode wie Base64codiert. Dadurch werden der Benutzername und das Kennwort in ein verschlüsseltes Format für die Übertragung konvertiert.

Da der Header für die Übertragung von Anmeldeinformationen verwendet wird, sind keine anderen komplexen Sicherheitsmaßnahmen vorhanden. Nicht einmal Sitzungs-IDs oder Cookies.

 

Beispiel für die Standardauthentifizierung in einem Anforderungsheader:

Autorisierung: Basic Cg4sOnOlY8KyPQ==

 

Digest-Authentifizierung

Die Digest-Zugriffsauthentifizierung ist komplexer und erweiterter als die Standardauthentifizierung. Digest verwendet eine Kombination aus dem Kennwort des Benutzers und anderen Attributen, um einen MD5-Hash zu erstellen. Diese wird dann zur Authentifizierung an den Server gesendet. Es ist fortschrittlicher als andere Sicherheitsmechanismen, da es die Anmeldeinformationen als Hash sendet. Es wurde ursprünglich als Teil von RFC 2069 erstellt, Sicherheitsverbesserungen wurden später in RFC 2617 hinzugefügt.

Bei der Digestauthentifizierung ist es der Server, der den Client erkennt, der versucht, auf die Ressource zuzugreifen. Der Server generiert einen eindeutigen Wert, der als “Nonce” bezeichnet wird. Später wird dieser eindeutige Wert vom Ressourcenanforderer verwendet, um einen MD5-Hash zu generieren, der vom Server überprüft wird.

 

API-Schlüssel

API-Schlüssel werden heutzutage im Vergleich zur Standardauthentifizierung häufig verwendet. Sie können es in mobilen Anwendungen sowie Webanwendungen sehen. API-Schlüssel wurden erstellt, um die Sicherheitslücken zu schließen , die mit dem grundlegenden API-Mechanismus verbunden sind. In einem API-Schlüssel wird ein eindeutiger Wert auf der Serverseite generiert, sobald Sie sich mit Ihrem Benutzernamen und Kennwort authentifizieren. Sie wird dem Benutzer zugewiesen. Normalerweise wird dieser eindeutige Wert basierend auf der IP-Adresse und verschiedenen Benutzerattributen generiert. Meistens senden Entwickler den API-Schlüssel im Autorisierungsheader.

 

Beispiel für einen API-Schlüssel

api_key: d670d200234faf5480aa11529b01d732

Die Verwendung eines API-Schlüssels bietet im Vergleich zu allen anderen Sicherheitsmechanismen durchaus viele Vorteile. Vor allem API-Schlüssel sind einfach mit besserer Sicherheit. Der Nachteil ist, dass jeder diesen Sicherheitsschlüssel mit einem der Netzwerk-Sniffing-Tools abholen kann. Dies kann zu Sicherheitsproblemen der gesamten Anwendung führen.

 

Inhaber

Träger bedeutet “eine Person oder Sache, die etwas trägt oder hält.” Wie der Name schon sagt, handelt es sich um ein HTTP-Authentifizierungsschema, das Sicherheitstoken umfasst. Der Inhaber des Sicherheitstokens erhält Zugriff auf bestimmte Funktionen oder URLs. Das Inhabertoken wird in der Regel vom Server als Reaktion auf eine Client-Anmeldeanforderung generiert. Sobald der Benutzer über das Inhabertoken vom Server verfügt, muss er das Token zusammen mit dem Autorisierungsheader senden, wenn er weitere Anforderungen stellt.

 

Beispiel für die Bearer Authentication

Autorisierung:

Träger eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1 LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiNmUyZTU0NjUtNTRjZi00ZTU2LTk2NDEtNDU4Njg 0YjVjNWQyIiwiZXhwIjoxNTkzOTY3ODQ0LCJpc3MiOiJodHRwOlxcd3d3LnNvdWxib29rLm1lIiwiYXVkIjo iaHR0cDpcXHd3dy5zb3VsYm9vay5tZSJ9.adcAYn8U5tn68EVGUGPLYBKcGC8Ohgxm7p45tDnpXVc

Es wurde ursprünglich als Teil von OAuth2.0 in RFC-6750 erstellt. Es gibt definitiv viele Vorteile der Verwendung von Inhaber-Token im Vergleich zu allen anderen Sicherheitsmechanismen. Inhaber-Token sind in Bezug auf die Sicherheit besser.

 

OAuth 1.0 und OAuth 2.0

OAuth ist ein sichereres Protokoll für die Autorisierung. OAuth bietet Einfachheit und bietet gleichzeitig einen Autorisierungsfluss für Anwendungen. OAuth wird in der Regel von Benutzern verwendet, um sich beispielsweise mit ihren Google-, Microsoft-, Facebook-, Slack-Konten bei Websites dritter Partei anzumelden, ohne ihre Anmeldeinformationen offenzulegen.

OAuth 1.0 steht im Verdacht, Sicherheitslücken zu haben, und wird nicht mehr unterstützt. OAuth 2.0 verfügt über erweiterte Sicherheitsfunktionen und ist das Beste für die Identifizierung und Authentifizierung von persönlichen Benutzerkonten. OAuth 2.0 ermöglicht es Benutzern, ihre spezifischen Attribute für eine Anwendung freizugeben, während ihre Anmeldeinformationen und andere Informationen geheim gehalten werden. OAuth 1.0 war viel komplizierter und weniger sicher als OAuth 2.0. Die größte Änderung in OAuth2.0 ist, dass es nicht notwendig ist, jeden Anruf mit einem verschlüsselten Hash zu signieren.

Im Grunde besteht OAuth aus zwei Token, um die Überprüfung durchzuführen. ein Authentifizierungstoken und sitzungstoken. Authentifizierungstoken funktionieren wie API-Schlüsselsicherheitsprotokolle, die Anwendung authentifiziert sich für den Zugriff auf Benutzerdaten. Sitzungstoken werden verwendet, um benutzersitzungssitzungen zu verwalten und ein neues Authentifizierungstoken abzurufen, wenn das Sitzungstoken abgelaufen ist. OAuth 2.0 kombiniert Authentifizierung und Autorisierung, um mehr Sicherheit für die Anwendung zu ermöglichen.

In OAuth greift der Benutzer mit Anmeldeinformationen auf die Anwendung zu. Die Anwendung fordert dann ein Authentifizierungstoken an. Der Anforderer sendet diese Anforderung an einen Authentifizierungsserver, der diese Authentifizierung zulässt, wenn die Anmeldeinformationen korrekt sind. Dieses Authentifizierungstoken kann jederzeit unabhängig vom Benutzer überprüft werden. Dies wird OAuth zu einem viel sichereren Mechanismus als die anderen HTTP-Authentifizierungen machen. Einer der Größten Nachteile von OAuth ist die Komplexität, die implementiert werden muss. Sie sollten über fundierte Kenntnisse im OAuth-Fluss verfügen, um ihn in Ihre Anwendung zu integrieren.

 

OpenID Connect

OpenID Connect ist eine Erweiterung des OAuth 2.0-Protokolls. Es überprüft die Clientidentität basierend auf der Authentifizierung, die von einem Autorisierungsserver durchgeführt wird. Darüber hinaus kann es Benutzerprofilinformationen über den Client abrufen. OpenID connect löst tatsächlich viele Nachteile von OAuth 2.0 und bietet eine bessere Lösung für Endbenutzer und Entwickler.

 

Was ist das beste Authentifizierungsprotokoll?

Die HTTP-Standardauthentifizierung ist die einfachste, die in Ihrer Anwendung implementiert werden kann, ist aber auch überhaupt nicht sicher. Anmeldeinformationen werden codiert, aber als Nur-Text gesendet. Die Digestauthentifizierung verbessert die Standardauthentifizierung, indem Daten im Hashformat gesendet werden. Aber der MD5-Algorithmus-Hash ist überhaupt nicht komplex und kann sehr leicht gehackt werden. API-Schlüssel und Inhaber sind fast ähnlich und bieten eine bessere Sicherheit, dass oben.

Das OAuth-Protokoll stellt sicher, dass keine Hacker an Clientinformationen gelangen können. Selbst die Anwendung kann die Anmeldeinformationen des Clientprofils und private Informationen nicht abrufen. OpenID Connect richtet Protokolle für Anwendungen ein, um mithilfe der RESTful-API auf die Attribute des Clients zuzugreifen. OpenID Connect erweitert den OAuth 2.0-Autorisierungstokenfluss durch die Einführung neuer Token. Grundsätzlich wird OpenID Connect als Erweiterung von OAuth 2.0 realisiert.

 

Verwenden von LoadView zum Testen einer API, die eine Authentifizierung erfordert

In diesem Abschnitt implementieren wir die HTTP-API-Authentifizierung mithilfe von LoadView. LoadView ermöglicht es Ihnen, diese Aufgaben sehr einfach und effizienter zu erledigen. Load View bietet zwei Optionen für Auslastungstests für die API-Authentifizierung:

 

API-Authentifizierung: Option 1

Wenn Sie Zugriff auf die Anwendung haben, können wir die API-Anforderung mit einem beliebigen Netzwerktool abrufen. Dies ist die einfachste Methode. Wir zeigen eine schnelle Demonstration für die Konfiguration der oben genannten HTTP-Authentifizierungsmechanismen mit LoadView

Hinweis: Sie können API-Serveranforderungsdetails und Textdatendetails von Ihrem Entwicklungsteam abrufen oder mit einem beliebigen Netzwerk-Sniffing-Tool erfassen.

 

Schritt 1: Wählen Sie einen Auslastungstesttyp aus

Melden Sie sich bei LoadView an, und wählen Sie unter Einen Auslastungstesttypaus , wählen Sie HTTP/Saus.

Wählen Sie einen Auslastungstesttyp aus

 

Schritt 2: Konfigurieren Ihrer API

Auf dem nächsten Bildschirm werden Sie aufgefordert, Ihre API zu konfigurieren. Hier zeigen wir Ihnen, wie Sie verschiedene HTTP-Authentifizierungsmechanismen in LoadView konfigurieren können.

Standardauthentifizierung

Standardauthentifizierung

 

API-Schlüssel

API-Schlüssel

 

Träger-Token

Träger-Token

 

OAuth 2.0

OAuth 2.0 und Open ID Connect sind komplexer zu konfigurieren. Ich zeige Dir Demo für OAuth 2.0. Es gibt eine einfache Möglichkeit, OAuth 2.0 Authentifizierung zu tun, die ich nach diesem Abschnitt erklären werde.

 

Schritt 1: OAuth Authentication Server

Konfigurieren Sie die Details des OAuth-Authentifizierungsservers.

OAuth-Authentifizierung

 

Schritt 2: Anmeldeinformationen

Geben Sie Anmeldeinformationen ein, und klicken Sie auf Login. Der Authentifizierungsserver leitet den Benutzer mit einem Code als URL-Parameter zu Ihrer Website um.

 

OAuth-Authentifizierungsanmeldeinformationen

 

Schritt 3: Serverinformationen

Der API-Server fragt den Authentifizierungsserver nach Benutzerinformationen.

OAuth Authentication Server-Informationen

 

Schritt 4: Zugriffstoken

Die API-Server identifizieren den Benutzer und antworten mit einem Zugriffstoken. Der Benutzer sendet dann bei jeder Anforderung das Zugriffstoken an den API-Server. API-Server überprüft und gibt Zugriff auf die Anwendung.

OAuth-Authentifizierungszugriffstoken

 

 

API-Authentifizierung: Option 2

Wenn die erste Option nicht möglich ist, können Sie sie mit dem EveryStep Web Recorder-Aufnahmetool aufzeichnen. Sie können über das Web darauf zugreifen und die Verwendung des Recorders ist einfacher und effektiver. Darüber hinaus müssen Sie keine verschiedenen Authentifizierungsmechanismen erlernen. Hier werden wir zeigen, wie Sie Auslastungstests mit LoadView und mit dem EveryStep Web Recorder durchführen. Die Anwendung verwendet OAuth 2.0 für die Authentifizierung.

 

Schritt 1: Aufzeichnen eines neuen Skripts

Melden Sie sich bei LoadView an, und wählen Sie unter Einen Auslastungstesttypaus , wählen Sie Web applicationsaus. Oder öffnen Sie einfach den EveryStep Web Recorder, geben Sie Ihre URL ein und starten Sie die Aufzeichnung.

 

OAuth-Aufzeichnung eines neuen Skripts

 

Schritt 2: Navigieren zur Anmeldefunktionalität

OAuth Anmelden

OAuth-Zeichen In Schritt 2

 

Das wars. Sie haben die Anwendungsauthentifizierung mit OAuth 2.0 aufgezeichnet. Wiederholen Sie das aufgezeichnete Skript und stellen Sie sicher, dass alles wie erwartet funktioniert. Ist es nicht einfach? Sobald die Aufzeichnung abgeschlossen ist, können Sie zu den nächsten Schritten wechseln, um den Auslastungstest auszuführen.

 

Letzte Gedanken: Laden von Web-APIs, die eine Authentifizierung erfordern

Das Korrelieren von HTTP-Authentifizierungsmechanismen ist keine einfache Aufgabe mit einem Leistungstesttool. Sie benötigen praktische Erfahrung und umfassende Kenntnisse darüber, wie der Authentifizierungsfluss funktioniert. Außerdem ist es sehr wichtig, Auslastungstests für Ihre Anmeldefunktionalität durchzuführen. Wenn Ihr Anmeldemodul nicht in der Lage ist, die erwartete gleichzeitige Benutzerauslastung zu bedienen, ist dies ein großer Verlust für Ihr Unternehmen. Ihre Anwendungsanmeldung ist ein wichtiger Bestandteil der Funktionalität Ihrer Anwendung. Wenn Sie auf der Suche nach einer guten End-to-End-Lösung für Leistungstests für Ihre Web-APIs sind, wird Ihnen LoadView auf jeden Fall gefallen. Gehen Sie vor und versuchen Sie es heute!