APIs spielen eine entscheidende Rolle bei der Anwendungskonnektivität, sie sind jedoch auch anfällig für Angriffe. In der Vergangenheit gab es bei monolithischen Apps nur einen Einstiegspunkt, der gesichert werden musste. In Microservices-Architekturen besteht eine einzelne App oft aus vielen Microservices, die über APIs verbunden sind, und jede dieser APIs kann Hunderte von Endpunkten haben. Dadurch wird die potenzielle Angriffsfläche für APIs riesig, da jede neue API einen Einstiegspunkt in Ihren Sicherheitsbereich schafft.
Es gibt viele Strategien zum Sichern Ihrer APIs. Eine der grundlegendsten ist die Zugriffskontrolle . Einfach ausgedrückt müssen Sie die Identität des Benutzers überprüfen (Authentifizierung oder AuthN) und bestätigen, dass er auf bestimmte Ressourcen zugreifen kann (Autorisierung oder AuthZ). Die Implementierung von OpenID Connect (OIDC) ist einer der am häufigsten verwendeten Zugriffskontrollansätze für APIs. Mit dem API Connectivity Manager , einem Teil der F5 NGINX Management Suite , können Sie es in wenigen Minuten zum Laufen bringen.
In diesem Tutorial erfahren Sie, wie Sie den Autorisierungsteil des OIDC-Workflows durchführen, indem Sie die JSON Web Token (JWT)-Validierung mit API Connectivity Manager und Azure Active Directory (Azure AD) einrichten.
OpenID Connect (OIDC) ist ein Identitätsprotokoll, das auf dem OAuth 2.0- Protokoll aufbaut. OIDC ermöglicht Clients, die Identität des Endbenutzers oder Geräts zu überprüfen. Dies ist ein Teil der Zugriffskontrolle, die sowohl Authentifizierung als auch Autorisierung umfasst:
Es gibt viele verschiedene Implementierungen von OIDC, einschließlich Azure AD, das Sie in diesem Tutorial verwenden werden. Alternativ können Sie mit API Connectivity Manager andere OIDC-Lösungen verwenden, etwa F5 BIG-IP Access Policy Manager (APM), Okta, Auth0, Ping Identity und mehr.
Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
Sie können sich für Ihre 30-tägige kostenlose Testversion der NGINX Management Suite anmelden, wenn Sie Zugriff auf den API Connectivity Manager benötigen.
Öffnen Sie einen Browser und melden Sie sich bei Ihrem Azure-Portal an.
Klicken Sie im linken Menü auf App-Registrierungen .
Abbildung 1: Startseite des Azure AD-Portals
Klicken Sie auf die Schaltfläche Neu registrieren .
Abbildung 2: Azure AD-App-Registrierung
Um eine neue Anwendung zu erstellen, geben Sie einen Namen und eine Umleitungs-URI ein und klicken Sie auf die Schaltfläche „Registrieren“ . In dieser Demo nutzen Sie Postman und verwenden daher die Postman OIDC-Umleitungs-URI .
Abbildung 3: Erstellen einer neuen Azure AD-App
Nachdem Ihre App erstellt wurde, müssen Sie OAuth-Bereiche erstellen, um Zugriff auf die API zu ermöglichen. Klicken Sie im linken Menü auf den Link „API verfügbar machen“ .
Abbildung 4: Bereitstellen einer API
Klicken Sie auf „Bereich hinzufügen“ .
Abbildung 5: Hinzufügen eines Bereichs
Akzeptieren Sie die standardmäßige Anwendungs-ID-URI oder erstellen Sie Ihre eigene und klicken Sie auf die Schaltfläche „Speichern und fortfahren“ . Wenn Sie Ihre eigene Anwendungs-ID-URI erstellen möchten, müssen Sie Ihre gewünschte Domäne bei Azure AD registrieren.
Abbildung 6: Anwendungs-ID-URL
Für diese Demo basiert Ihr Umfang auf einem Microsoft -Beispiel . Füllen Sie das Formular mit den folgenden Informationen aus und klicken Sie dann auf die Schaltfläche „Bereich hinzufügen“ :
Bereichsname: Mitarbeiter.Alles.Lesen
Wer kann einwilligen?: Administratoren und Benutzer
Anzeigename der Administratoreinwilligung: Nur Lesezugriff auf Mitarbeiterdatensätze
Beschreibung der Administratoreinwilligung: Erlauben Sie schreibgeschützten Zugriff auf alle Mitarbeiterdaten.
Anzeigename der Benutzereinwilligung: Lesezugriff auf Ihre Personalakten
Beschreibung der Benutzereinwilligung: Erlauben Sie schreibgeschützten Zugriff auf Ihre Mitarbeiterdaten.
Abbildung 7: Hinzufügen eines Bereichs
Als Nächstes müssen Sie die Clientanwendung autorisieren. Dazu greifen Sie auf die Client-ID zu. Klicken Sie im linken Menü auf den Link „Übersicht“ und kopieren Sie die Anwendungs-ID (Client-ID) .
Abbildung 8: Anwendungs-Client-ID
Klicken Sie erneut auf den Link „API verfügbar machen“ und dann auf die Schaltfläche „Client-Anwendung hinzufügen“ .
Abbildung 9: Hinzufügen einer Clientanwendung
Fügen Sie die Anwendungsclient-ID in das Feld „Client-ID“ ein und aktivieren Sie das Kontrollkästchen neben Ihrer Anwendungs-ID-URI. Klicken Sie dann auf die Schaltfläche „Anwendung hinzufügen“ .
Abbildung 10: Hinzufügen einer Clientanwendung
Als Nächstes nutzen Sie für diese Demo einen Autorisierungscode mit dem Autorisierungscode-Flow , sodass für Postman ein Client-Geheimnis erforderlich ist. Klicken Sie im linken Menü auf den Link „Zertifikate und Geheimnisse“ und dann auf die Schaltfläche „Neues Client-Geheimnis“ .
Abbildung 11: Neues Client-Geheimnis
Geben Sie Ihrem Geheimnis einen Namen und belassen Sie die standardmäßige Ablaufzeit.
Abbildung 12: Geheimer Name
Kopieren Sie als Nächstes Ihr Client-Geheimnis und speichern Sie es in einem Kennwort-Tresor, damit Sie es später verwenden können.
Abbildung 13: Client-Geheimnis
Nachdem Sie Ihre Azure AD-Anwendung nun konfiguriert haben, können Sie den API-Gateway-Cluster im API Connectivity Manager einrichten, um die JSON Web Token Assertion für Ihren definierten Dienst durchzuführen. Für diesen Schritt müssen Sie die URI für die JSON Web Key (JWK)-Sets Ihres Azure AD-Mandanten ermitteln.
Sie erhalten Ihre JWKS-URI von der Bekannter Endpunkt des Azure AD-Mandanten:
https://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration
Diese Seite stellt eine JSON-Nutzlast bereit, die den Schlüssel jwks_uri enthält. Sie müssen den Wert kopieren.
Abbildung 14: Bekannter Endpunkt des Azure AD-Mandanten
Nachdem Sie nun Ihre JWKS-URI haben, öffnen Sie Ihre API Connectivity Manager-Konsole und navigieren Sie zur Konfiguration Ihres Service-Proxys. Klicken Sie auf „Richtlinie hinzufügen“ für die JSON Web Token Assertion -Richtlinie.
Abbildung 15: Proxy-Richtlinien für Gateway-Dienste
Fügen Sie als Nächstes die JKWS-URI Ihres Azure AD-Mandanten in das Feld „URI-Speicherort“ ein und klicken Sie dann auf die Schaltfläche „Hinzufügen“ .
Abbildung 16: JSON Web Token Assertionsrichtlinie
Klicken Sie auf die Schaltfläche „Speichern und veröffentlichen“, um diese Richtlinie an Ihren API-Gateway-Cluster zu übertragen.
Abbildung 17: Service-Gateway-Richtlinie
Das ist es! Ihre API Connectivity Manager-Instanz ist jetzt so konfiguriert, dass sie JWT-Assertion auf dem konfigurierten Service-Gateway ausführt.
Jetzt ist es Zeit, Ihr Setup zu testen und sicherzustellen, dass es sich wie erwartet verhält. Für den Einstieg müssen Sie einige Dinge aus Ihrer Azure AD-Anwendung abrufen:
Um den OAuth-Bereich zu erhalten, öffnen Sie Ihr Azure-Portal und navigieren Sie zurück zu Ihrer App-Registrierungsseite. Klicken Sie anschließend im linken Menü auf den Link „API verfügbar machen“ und klicken Sie auf das Kopiersymbol für Ihren Bereich. Speichern Sie diesen Wert, damit Sie ihn in wenigen Minuten verwenden können.
Abbildung 18: API-Bereiche
Um die OAuth-Autorisierungs- und Token-Endpunkte abzurufen, klicken Sie im linken Menü auf den Link „Übersicht“ und dann auf die Schaltfläche „Endpunkte“ . Kopieren Sie anschließend die Autorisierungs- und Token-Endpunkt-URIs.
Abbildung 19: Azure AD-Anwendungsendpunkte
Abbildung 20: Azure AD-Anwendungsendpunkt-URLs
Öffnen Sie Postman und klicken Sie auf das Menü „Umgebungen“ . Klicken Sie dann auf den Link „Umgebung erstellen“ .
Abbildung 21: Postman - Umgebung erstellen
Benennen Sie Ihre Umgebung und fügen Sie sechs Variablen mit den Werten (die Sie in den vorherigen Schritten gespeichert haben) in die Spalten „Anfangswert“ und „ Aktueller Wert“ ein. Klicken Sie anschließend auf die Schaltfläche „Speichern“ .
Abbildung 22: Postman-Umgebungsvariablen
Öffnen Sie eine neue Registerkarte in Postman und befolgen Sie diese Schritte:
Abbildung 23: Postman-Anfrage
Abbildung 24: Postman-Authentifizierungskonfiguration
Es öffnet sich ein Browserfenster und Sie werden aufgefordert, sich mit Ihren Azure AD-Anmeldeinformationen anzumelden. Sobald Sie sich erfolgreich authentifiziert haben, werden Sie zurück zu Postman geleitet und das folgende Fenster wird angezeigt. Klicken Sie auf die Schaltfläche Token verwenden .
Abbildung 25: Postman-Nutzungstoken
Da Sie nun über Ihr OAuth-Zugriffstoken verfügen, können Sie endlich Ihren API-Aufruf tätigen. Klicken Sie auf die Schaltfläche „Speichern“ und dann auf die Schaltfläche „Senden “.
Wenn alles richtig konfiguriert ist, sollte die Antwort „200 OK“ angezeigt werden.
Abbildung 26: Postman – Erfolgreiche Anforderung
Sie verfügen jetzt über den API Connectivity Manager, der Ihre APIs mithilfe von Azure AD OAuth-Zugriffstoken schützt. Die nächsten Schritte wären, zusätzliche OAuth-Bereiche hinzuzufügen und den API-Gateway-Cluster im API Connectivity Manager so zu konfigurieren, dass diese Bereiche an Ihre geschützten APIs übergeben werden – aber das ist ein Thema für einen anderen Beitrag!
Starten Sie eine 30-tägige kostenlose Testversion der NGINX Management Suite , die API Connectivity Manager und Instance Manager umfasst.
Eine Version dieses Beitrags erschien zuerst auf codygreen.com . Es wird hier mit Genehmigung des Autors bearbeitet und erneut abgedruckt.
„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."