JWT-Authentifizierung in Drupal einrichten
Die Drupal API-Authentifizierung Das Modul verwendet JSON Web Tokens (JWT) zur sicheren Authentifizierung von API-Anfragen. Zunächst werden Ihr Drupal-Benutzername und Ihr Passwort überprüft, um ein signiertes JWT-Token zu generieren, das anschließend an den Client zurückgegeben wird. Dieses Token kann bis zu seinem Ablauf für den Zugriff auf Drupal-APIs verwendet werden. JWT unterstützt sowohl HSA- als auch RSA-Algorithmen zur Signierung und Validierung. Dieses Modul ist vollständig kompatibel mit Drupal 8, Drupal 9, Drupal 10 und Drupal 11.
- Verwenden von Composer
- Mit Drush
- Manuelle Installation
Voraussetzungen:
- REST DES TAGES: Dieses Modul bietet eine benutzerfreundliche Schnittstelle zur Konfiguration des REST-Moduls.
- Aktivieren Sie die folgenden Webdienstmodule aus dem Erweitern Abschnitt (/admin/modules) Ihrer Drupal-Site:
- JSON: API
- REST DES TAGES
- RESTful-Webdienste
- Serialisierung
API aktivieren und Methoden zuweisen:
- Der erste Schritt besteht darin, die API zu aktivieren und die für diese API zulässigen Methoden und Operationen zuzuweisen. Dies kann mithilfe der REST DES TAGES Modul oder durch direkte Änderung der Drupal-Konfiguration.
- Klicken Sie auf API aktivieren .
- Um die API mithilfe des REST-UI-Moduls zu aktivieren, klicken Sie auf das Einrichtung Schaltfläche (wie unten gezeigt).
- In unserem Beispiel müssen wir die /Entität/Benutzer API. Klicken Sie dazu davor auf die Option Aktivieren.
- Da unser Ziel darin besteht, einen Benutzer in Drupal zu erstellen, wählen Sie die folgenden Konfigurationen aus:
- Anleitung: jetzt lesen
- Format: JSON
- Authentifizierungsanbieter: rest_api_authentication
- Dadurch kann das miniOrange API-Authentifizierungsmodul die API authentifizieren. Klicken Sie auf das Konfiguration speichern um fortzufahren.
Konfigurationsschritte
1. JWT-Authentifizierungsmethode einrichten:
- In diesem Schritt richten wir JWT als API-Authentifizierungsmethode ein. Gehen Sie dazu zum API-Authentifizierung Registerkarte des Moduls (/admin/config/people/rest_api_authentication/auth_settings).
- Der Grundlegende Einstellung, aktivieren Sie die Aktivieren Sie die Authentifizierung Umschalten.
- Geben Sie die Anwendungsname und wählen Sie JWT von dem Authentifizierungsmethode .
- Scrollen Sie nach unten zum JWT-Konfiguration Abschnitt auf derselben Registerkarte.
- Geben Sie im Feld „Benutzernamenattribut“ den Attributnamen aus dem empfangenen JWT ein, das den Drupal-Benutzernamen enthält.
- Auswählen Signierungsalgorithmus aus dem Dropdown.
- Optional: Geben Sie die gewünschte Ablaufdauer (in Minuten) unter Token-Ablaufzeit.
- JWKS-URI: Wenn Sie ein externes JWT-Token verwenden möchten, geben Sie die JWKS-URI an, um es in Drupal zu validieren.
- Zertifikat/Geheimschlüssel: Geben Sie ein Zertifikat an, wenn RS256 ausgewählt ist, oder einen geheimen Schlüssel, wenn HS256 ausgewählt ist.
- Privat Schlüssel: Geben Sie den privaten Schlüssel für JWT ein oder generieren Sie einen neuen Schlüssel.
- Öffentlicher Schlüssel: Geben Sie den öffentlichen Schlüssel für JWT ein oder generieren Sie einen neuen Schlüssel.
- Klicken Sie auf die Konfiguration speichern .
- Sie haben die JWT-Authentifizierungsmethode erfolgreich konfiguriert.
- Zunächst müssen wir einen API-Aufruf durchführen, um ein JWT zu erhalten. Dieses Token verwenden wir dann zur Authentifizierung der Drupal-API zum Erstellen eines Benutzers.
- Wir erhalten das JWT durch eine POST-Anfrage mit dem Drupal-Benutzernamen und -Passwort. Sie müssen den Benutzernamen und das Passwort base64-kodiert senden. Das unten stehende Anfrageformat dient als Referenz.
Für externes JWT:
Benutzerdefinierte Schlüssel generieren:
Hinweis: Sie können die Schlüssel manuell eingeben oder Schlüssel generieren. Diese Schlüssel werden zum Signieren und Verifizieren der JWT-Token verwendet.
Hinweis: Verwenden Sie bei der Authentifizierung der API den anwendungsspezifischen eindeutigen Header.
Anfrage: POST /rest_api/id_token Header: Akzeptieren: application/json Autorisierung: Basic base64encoded CURL-Anforderungsformat - curl --location --request POST ' /rest_api/id_token' \ --header 'Akzeptieren: application/json' \ --header 'Inhaltstyp: application/json' \ --header 'Autorisierung: Basic base64-codiert '
- Eine erfolgreiche Antwort gibt das JWT zusammen mit dem Ablauf seines Tokens zurück. (siehe Bild unten)
2. Beispiel:
- Zum besseren Verständnis sehen wir uns ein Beispiel für die Verwendung von JWT-Token zum Erstellen eines Benutzers in Drupal mit der REST-API an.
- Um einen Benutzer in Drupal zu erstellen, müssen Sie eine POST-Anfrage stellen und dabei das empfangene JWT oder externe JWT als Bearer-Token im Autorisierungsheader verwenden. Informationen zum Aufruf finden Sie im folgenden Beispiel.
Hinweis: Die /entity/user-API in Drupal wird zum Erstellen eines neuen Benutzers verwendet.
HTML-Anforderungsformat – Anforderung: POST /entity/user?_format=json Header: AUTH-METHOD: application_id Akzeptieren: application/json Inhaltstyp: application/json Autorisierung: Träger received_JWT Body: { "name": { "value": " " }, "mail": { "value": " " }, "pass": { "value": " " }, "status": { "value": "1" } } CURL-Anforderungsformat - curl --location --request POST ' /entity/user?_format=json' \ --header 'AUTH-METHOD: application_id' \ --header 'Akzeptieren: application/json' \ --header 'Inhaltstyp: application/json' \ --header 'Autorisierung: Autorisierung: Träger ' \ --data-raw ' { "name": [ { "value": "Benutzername" } ], "mail": [ { "value": "email" } ], "pass": [ { "value": "Passwort" } ], "status": [ { "value": "1" } ] }
- Bei einer erfolgreichen Antwort werden die Details des von Ihnen erstellten Benutzers zurückgegeben (siehe Abbildung unten).
Herzlichen Glückwunsch! Sie haben die JWT-Authentifizierungsmethode mithilfe des Drupal-API-Authentifizierungsmoduls erfolgreich eingerichtet.
Wenn die Konfiguration nicht erfolgreich war, kontaktieren Sie uns bitte unter drupalsupport@xecurify.com. Bitte fügen Sie einen Screenshot des Fehlerfensters bei. Wir helfen Ihnen dann bei der Lösung des Problems und führen Sie durch die Einrichtung.
