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

Die API-Key-Authentifizierung ist eine der einfachsten Methoden, um Drupal REST-APIs zu schützen. Sobald Sie API-Keys für alle Ihre Benutzer generiert haben, können Sie diese Schlüssel verwenden, um den Zugriff auf Ihre Drupal REST-APIs abzusichern.

Sie können dies tun, indem Sie bei jeder API-Anfrage den Drupal-Benutzernamen und den API-Key des Benutzers im Authorization-Header mitsenden. Das Drupal API Authentication-Modul authentifiziert die Anfrage dann auf Grundlage des Benutzernamens und des zugehörigen API-Keys. Dieses Modul ist kompatibel mit Drupal 7, Drupal 8, Drupal 9, Drupal 10 und Drupal 11.

 Download 

Einrichtungsvideo:

 Drupal REST API Key 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 stellt eine Benutzeroberfläche zur Konfiguration des REST-Moduls bereit. 
  • Aktivieren Sie die folgenden Webservice-Module im Abschnitt „Erweitern“ (/admin/modules) Ihrer Drupal-Seite:
    • REST UI
    • RESTful Web Services
    • Serialization

    Drupal Rest api

Schritte zur Einrichtung der API-Key-basierten Authentifizierung in Drupal:

  • Zum besseren Verständnis nehmen wir als Beispiel die API-Key-basierte Authentifizierung für die Create User API von Drupal.
  • Bitte beachten Sie, dass die /entity/user-API von Drupal verwendet wird, um einen Benutzer in Drupal zu erstellen.

API aktivieren und Methoden/Operationen zuweisen:

  • Im ersten Schritt muss die API aktiviert und die erlaubten Methoden und Operationen zugewiesen werden. Dies kann über das REST UI-Modul oder durch direkte Konfigurationsanpassung erfolgen.
  • Um die API über das REST UI-Modul zu aktivieren, klicken Sie auf die Schaltfläche Konfigurieren des REST UI-Moduls (siehe unten).

    api key

  • In unserem Beispiel muss die /entity/user-API aktiviert werden. Aktivieren Sie diese API über die Option „Enable“ davor.

    api key

  • Da unser Ziel das Erstellen eines Benutzers in Drupal ist, wählen Sie folgende Einstellungen:
    • Methode: POST
    • Format: json
    • Authentifizierungsanbieter: rest_api_authentication.
  • Die Auswahl von rest_api_authentication ermöglicht es dem miniOrange REST API Authentication-Modul, Ihre /entity/user-API zu authentifizieren. Klicken Sie auf die Schaltfläche Konfiguration speichern, um fortzufahren.

    drupal select

API-Key Benutzerfeld in Drupal erstellen:

Hinweis: Wenn Sie die kostenlose Version des Moduls verwenden, können Sie diesen Schritt überspringen.

In diesem Schritt legen wir fest, wie der API-Key zur Authentifizierung der API-Aufrufe genutzt wird. Dazu müssen wir zunächst ein Benutzerattributfeld zum Speichern eines API-Keys anlegen.

  • Gehen Sie zum Tab „Felder verwalten“ (/admin/config/people/accounts/fields) in Drupal.
  • Klicken Sie auf die Schaltfläche Feld hinzufügen, um das Feld zu erstellen.

    manage fields

  • Wählen Sie im Dropdown Neues Feld hinzufügen die Option Text (Plain) und geben Sie API Key im Beschriftungsfeld ein. Klicken Sie dann auf Speichern und fortfahren, um die Einstellungen zu sichern.
  • Stellen Sie sicher, dass der Maschinenname des Benutzerattributs field_api_key lautet.

    Add field

  • Klicken Sie nun auf Feldeinstellungen speichern und danach auf Einstellungen speichern, um die Felderstellung abzuschließen.

    Save field

    Drupal API key settings

  • Sie sehen nun ein zusätzliches API-Key Textfeld im Benutzerprofil.

API-Key-basierte Authentifizierung einrichten:

  • In diesem Schritt generieren wir einen API-Key. Gehen Sie dazu in den 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.
  • Um die API-Key-basierte Authentifizierung zu aktivieren, wählen Sie die Option API Key.
  • Auf demselben Bildschirm können Sie einen API-Key für einen bestimmten Benutzer oder für alle Benutzer gleichzeitig generieren.
  • Jetzt werden wir den API-Key nur für einen einzelnen Benutzer generieren.
  • Geben Sie im Textfeld Benutzername eingeben den Benutzernamen ein, für den Sie einen API-Key generieren möchten, und klicken Sie auf API-Key für diesen Benutzer generieren.
  • Sie können nun den generierten API-Key im API-Key-Feld Ihres Benutzerprofils einsehen.

    REST API create key

  • Bewahren Sie den API-Key gut auf, da Sie ihn später für die Authentifizierung der API benötigen.

Drupal-Rollen die Berechtigung zum Benutzererstellen geben:

  • Sie können auch Nicht-Admin-Rollen die Berechtigung zum Erstellen von Benutzern in Drupal geben. Weisen Sie dazu der gewünschten Drupal-Rolle die Berechtigung Benutzer verwalten unter dem Bereich Berechtigungen (/admin/people/permissions) Ihrer Drupal-Seite zu.

    REST API

Das war’s!!!

  • Jetzt können wir versuchen, einen Benutzer in Drupal über einen API-Call mit API-Key-Authentifizierung zu erstellen.

Beispiel:

  • Um einen Benutzer in Drupal zu erstellen, müssen Sie eine POST-Anfrage zusammen mit dem Benutzernamen und dem vom miniOrange REST API Authentication-Modul ausgestellten API-Key stellen. Der Wert von Benutzername und API-Key muss base64-kodiert sein. Siehe unten das Format für eine Anfrage.

    Anfrage: POST  <your_drupal_base_url>/entity/user?_format=json
    Header: Authorization: Basic base64encoded <username:api_key>
                 Accept: application/json
                 Content-Type: application/json

    Body: 

    {
                "name": [
                            {"value": "<username>"}
                    ],
               "mail": [
                            {"value": "<email>"}
                    ],
                "pass":[
                            {"value": "<password>"}
                    ],
                "status":[
                            {"value": "1"}
                    ]
    }

    CURL-Anfrageformat-

    curl --location --request POST  ‘<your_drupal_base_url>/entity/user?_format=json' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic base64encoded<username:API key>’ \
    --data-raw '  

    {
        "name": [
            {"value": "Username"}
        ],
        "mail": [
            {"value": "email"}
        ],
        "pass":[
            {"value": "Password"}
        ],
        "status":[
            {"value": "1"}
        ]
    }'

  • Sie können sich auch das Bild der Postman-Anfrage unten ansehen:

    postman

  • Eine erfolgreiche Antwort gibt die Benutzerdaten zurück, die Sie erstellt haben. (Siehe Bild unten)

    Postman response

  • Falls Sie einen Fehler in der Antwort erhalten, können Sie die folgende Tabelle für die Fehlerbeschreibung und mögliche Lösungen nutzen.

Fehlerantwort:

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_HEADER",
  "error_description": "Authorization header not received."
}

INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE Sie erhalten diesen Fehler, wenn Sie den Authorization Header senden, aber im falschen Format.
Beispiel:
{
  "status": "error",
  "error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE",
  "error_description": "Authorization header must be the type of Basic Authentication."
}
USER_DOES_NOT_EXIST

Sie erhalten diesen Fehler, wenn das Modul keinen Account zum Benutzernamen in der Anfrage findet.

Beispiel:
{
  "status": "error",
  "error": "USER_DOES_NOT_EXIST",
  "error_description": "The user does not exist."
}

INVALID_API_KEY

Sie erhalten diesen Fehler, wenn der in der API-Anfrage gesendete API-Key nicht übereinstimmt.

Beispiel:
{
  "status": "error",
  "error": "INVALID_API_KEY",
  "error_description": "The API Key sent in the Request seems to be invalid or incorrect using invalid API Key."
}

USER_NAME_MISSING

Sie erhalten diesen Fehler, wenn das Modul den Benutzernamen in der API-Anfrage nicht findet.

Beispiel:
{
  "status": "error",
  "error": "USER_NAME_MISSING",
  "error_description": "The username is missing from the request"
}

INVALID_AUTHORIZATION_HEADER

Sie erhalten diesen Fehler, wenn das Modul den Header nicht korrekt dekodieren kann oder Benutzername und API-Key im Header fehlen.

Beispiel:
{
  "status": "error",
  "error": "INVALID_AUTHORIZATION_HEADER",
  "error_description": "The authorization header seems to be invalid"
}

Artikel aus der Drupal Dokumentation.