JWT-Authentifizierung
Das Drupal API Authentication-Modul funktioniert, indem es zusammen mit Ihren API-Anfragen ein JWT-Token zur Authentifizierung sendet. Dieses Modul verwendet JSON Web Token (JWT), einen offenen Standard zur sicheren Darstellung der BenutzeridentitÀt bei Interaktionen zwischen zwei Parteien.
In diesem Schritt werden im Wesentlichen ein Benutzername und Passwort Ihrer Drupal-Seite verwendet, um zunĂ€chst ein JWT-Token zu erhalten. Sobald Benutzername und Passwort verifiziert wurden, erstellt das Drupal REST API Authentication-Modul ein signiertes JSON Web Token. Die API gibt dieses Token anschlieĂend an die Client-Anwendung zurĂŒck.
Sobald Sie das JWT-Token erhalten haben, können Sie dieses Token fĂŒr Operationen in Drupal verwenden, bis das JWT-Token ablĂ€uft. Das Drupal REST API Authentication-Modul gewĂ€hrt den Zugriff nur, wenn ein gĂŒltiges JWT von der Anwendung empfangen wird.
JWT kann mit zwei Algorithmen signiert und validiert werden â HSA und RSA.
Sehen wir uns an, wie ein JWT-Token zur API-Authentifizierung in Drupal verwendet werden kann.
Einrichtungsvideo:
Voraussetzungen: Download und Installation:
- Laden Sie das Drupal REST & JSON API Authentication-Modul herunter und installieren Sie es.
- REST UI: Dieses Modul bietet eine BenutzeroberflĂ€che fĂŒr die Konfiguration des REST-Moduls.
- Aktivieren Sie die folgenden Webservices-Module im Bereich âErweiternâ (/admin/modules) Ihrer Drupal-Seite:
- REST UI
- RESTful Web Services
- Serialization
Schritte zur Konfiguration der JWT-basierten API-Authentifizierung:
- FĂŒr ein besseres VerstĂ€ndnis nehmen wir als Beispiel die HinzufĂŒgung der JWT-basierten Authentifizierung zur Erstellung einer Basic Page in Drupal mit der /node-API.
API aktivieren und Methoden/Operationen wie folgt zuweisen:
- Im ersten Schritt muss die API aktiviert und die erlaubten Methoden und Operationen zugewiesen werden. Dies kann mit dem REST UI-Modul erfolgen oder indem Sie die Konfiguration direkt bearbeiten.
- Um die API ĂŒber das REST UI-Modul zu aktivieren, klicken Sie auf die SchaltflĂ€che Konfigurieren des REST UI-Moduls (siehe unten).
- In unserem Beispiel wollen wir die /node-API im Inhaltsbereich aktivieren. Aktivieren Sie diese API mit der Option âAktivierenâ davor.
- Da unser Ziel darin besteht, eine Basic Page in Drupal zu erstellen, wÀhlen Sie folgende Konfigurationen:
- Methode: POST
- Format: json
- Authentifizierungsanbieter: rest_api_authentication.
- Mit der Auswahl von rest_api_authentication können Sie das miniOrange REST API Authentication-Modul zur Authentifizierung Ihrer API verwenden. Klicken Sie auf die SchaltflÀche Konfiguration speichern, um fortzufahren.
JWT-basierte API-Authentifizierung einrichten:
-
In diesem Schritt richten wir JWT als API-Authentifizierungsmethode ein. Gehen Sie dazu zum Tab API Authentication des REST API Authentication-Moduls (/admin/config/people/rest_api_authentication/auth_settings).
- WĂ€hlen Sie das KontrollkĂ€stchen Authentifizierung aktivieren und klicken Sie auf âEinstellungen speichernâ.
- Unter der SchaltflĂ€che âEinstellungen speichernâ wĂ€hlen Sie die Option JWT.
-
Falls Sie ein extern erstelltes JWT-Token zur Authentifizierung verwenden möchten, können Sie dies mit folgenden Optionen tun:
- Geben Sie im Feld Username Attribute den Attributnamen an, unter dem Ihr Benutzername empfangen wird.
- Wenn Sie ein externes JWT-Token verwenden, können Sie auch die JWKS-URI angeben, um das JWT-Token in Drupal zu validieren.
Drupal-Rollen Berechtigung zum Erstellen einer Seite erteilen:
-
Sie können auch Nicht-Admin-Rollen die Berechtigung erteilen, eine Basic Page zu erstellen. Weisen Sie dazu der gewĂŒnschten Drupal-Rolle die Berechtigung Basic page: Neue Inhalte erstellen unter dem Bereich âBerechtigungenâ (/admin/people/permissions) Ihrer Drupal-Seite zu.
Das warâs!!!
Jetzt können wir versuchen, eine Basic Page ĂŒber einen API-Call mit JWT-Authentifizierung zu erstellen.
Beispiele:
-
Zuerst mĂŒssen wir einen API-Call machen, um ein JWT zu erhalten. AnschlieĂend wird dieses Token verwendet, um die Drupal API zur Erstellung einer Basic Page zu authentifizieren.
-
Wir können das JWT erhalten, indem wir eine POST-Anfrage mit dem Drupal-Benutzernamen und -Passwort senden. Die Zugangsdaten mĂŒssen base64-kodiert ĂŒbermittelt werden. Siehe das untenstehende Anfrageformat.
Anfrage: POST <your_drupal_base_url>/rest_api/id_token
Header: Authorization: Basic base64encoded <username:password;>
Accept: application/jsonCURL-Anfrageformat-
curl --location --request POST ' <your_drupal_base_url>/rest_api/id_token' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic base64encoded <username:password>'
-
Sie können auch das Bild der Postman-Anfrage zur JWT-Anforderung in Drupal einsehen.
Anfrage:
-
Eine erfolgreiche Antwort gibt das JWT zusammen mit seinem Ablaufdatum zurĂŒck. (Siehe Bild unten)
-
Falls Sie einen Fehler als Antwort erhalten, können Sie die folgende Tabelle zur Fehlerbeschreibung und zu möglichen Lösungen verwenden.
Fehler | Beschreibung |
INVALID_CREDENTIALS |
Sie erhalten diesen Fehler, wenn entweder der Benutzername oder das Passwort falsch ist. Beispiel: |
Drupal REST APIs mit erhaltenem JWT authentifizieren:
- Um die Authentifizierung mit JWT durchzufĂŒhren, fĂŒgen Sie das erhaltene JWT als Bearer-Token im Authorization Header hinzu.
Anfrage: POST <drupal_base_url> /node?_format=json
Header: Authorization: Bearer received_JWT
Accept: application/json
Body:
{
"type":[
{"target_id":"page"}
],
"title":[
{"value":"Drupal Rest API Authentication"}
],
"body":[
{"value":"Page created using the JWT Authentication."}
]
}CURL-Anfrageformat-
curl --location --request POST â<drupal_base_url>/node?_format=jsonâ\
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <received_JWT>â \
--data-raw '{
"type":[
{"target_id":"page"}
],
"title":[
{"value":"Drupal Rest API Authentication"}
],
"body":[
{"value":"Page created using the JWT Authentication."}
]
}'
Beispielanfrage zur Seitenerstellung mit JWT-basierter Authentifizierung:
- Sie können auch die entsprechende Postman-Anfrage dazu ansehen:
- Eine erfolgreiche Antwort sieht zum Beispiel so aus:
- Sie können die erstellte Seite im Inhalt-Tab von Drupal ĂŒberprĂŒfen.
-
Fehlerantworten und mögliche Lösungen:
Fehler | Beschreibung |
MISSING_AUTHORIZATION_HEADER |
Sie erhalten diesen Fehler, wenn Sie keinen Authorization Header in der API-Anfrage senden oder wenn dieser aus irgendeinem Grund vom Server entfernt wurde. Beispiel: |
INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE |
Sie erhalten diesen Fehler, wenn Sie zwar den Authorization Header senden, aber der Token-Typ nicht Bearer ist. Beispiel: |
TOKEN_EXPIRED |
Sie erhalten diesen Fehler, wenn das Access Token abgelaufen ist. Beispiel: |
USER_INFORMATION_NOT_FOUND |
Sie erhalten diesen Fehler beim Versuch, die Benutzerinformationen abzurufen. Beispiel: |
INVALID_SIGNATURE |
Sie erhalten diesen Fehler, wenn die Token-Signatur ungĂŒltig ist. Beispiel: |
Artikel aus der Drupal Dokumentation.