logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen fĂŒr Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen AbsĂ€tzen

Extra Paragraph Types (EPT) - analoger, auf AbsÀtzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll
21/05/2025, by Ivan

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.

 Download 

Einrichtungsvideo:

 Drupal REST API JWT Authentication Youtube Video

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

    Enable modules

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).

    Settings for REST UI

  • In unserem Beispiel wollen wir die /node-API im Inhaltsbereich aktivieren. Aktivieren Sie diese API mit der Option „Aktivieren“ davor.

    Resources

  • 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.

    Resource settings

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.

      JWT authentication

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.

    Add permissions

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/json

    CURL-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:

Postman request

  • Eine erfolgreiche Antwort gibt das JWT zusammen mit seinem Ablaufdatum zurĂŒck. (Siehe Bild unten)

    Postman JWT tokent

  • 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:
{
  "status": "error",
  "error": "INVALID_CREDENTIALS",
  "error_description": "Invalid username or password."
}

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:

    Postman headers

  • Eine erfolgreiche Antwort sieht zum Beispiel so aus:

    Postman response

  • Sie können die erstellte Seite im Inhalt-Tab von Drupal ĂŒberprĂŒfen.

    Drupal page

  • 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:
{
    "status": "error",
    "error":"MISSING_AUTHORIZATION_HEADE",
  "error_description": "Authorization header not received."
}

INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE

Sie erhalten diesen Fehler, wenn Sie zwar den Authorization Header senden, aber der Token-Typ nicht Bearer ist.

Beispiel:
{
    "status": "error",
    "error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE",
    "error_description": "Authorization header must be the type of Bearer Token."
}

TOKEN_EXPIRED

Sie erhalten diesen Fehler, wenn das Access Token abgelaufen ist.

Beispiel:
{
    "status": "error"
    â€œerror”: “TOKEN_EXPIRED”
    "message": "Invalid request: Token Expired."   
}

USER_INFORMATION_NOT_FOUND

Sie erhalten diesen Fehler beim Versuch, die Benutzerinformationen abzurufen.

Beispiel:
{
    "status": "error"
    â€œerror”: “USER_INFORMATION_NOT_FOUND”
    "message": "Could Not Retrieve User Information.",  
}

INVALID_SIGNATURE

Sie erhalten diesen Fehler, wenn die Token-Signatur ungĂŒltig ist.

Beispiel:
{
    "status": "error"
    â€œerror”: “INVALID_SIGNATURE”
    "message": "Invalid Token signature.",   
}

Artikel aus der Drupal Dokumentation.