REST-API-Authentifizierung mit externem Identitätsanbieter
Wenn Sie den Zugriff auf Ihre Drupal REST-APIs über Ihren Identitätsanbieter schützen oder einschränken möchten, sollten Sie die Authentifizierungsmethode „Externer Identitätsanbieter“ verwenden.
Die Drupal API-Authentifizierung über einen externen Identitätsanbieter beinhaltet die Verwendung von Tokens, die von Drittanbietern wie Google, Azure AD, Keycloak, Okta, Gitlab usw. bereitgestellt werden, um sicher auf Drupal REST-APIs zuzugreifen.
Bei dieser Methode müssen Sie das Modul mit dem User Info Endpoint Ihres Identitätsanbieters sowie dem Benutzernamen-Attribut aus Ihrem Identitätsanbieter konfigurieren. Danach können Sie alle Drupal-API-Anfragen mit dem vom Anbieter bereitgestellten Token authentifizieren. Das Drupal REST API Modul prüft die erhaltenen Benutzeranmeldedaten gegen das Drupal-Benutzerkonto. Dieses Modul ist kompatibel mit Drupal 7, Drupal 8, Drupal 9, Drupal 10 und Drupal 11.
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 zur Konfiguration des REST-Moduls.
- Aktivieren Sie die folgenden Webservices-Module im Abschnitt „Erweitern“ (/admin/modules) Ihrer Drupal-Seite:
- REST UI
- RESTful Web Services
- Serialization
Schritte zur Einrichtung der API-Authentifizierung mit externer Anwendung/Identitätsanbieter:
- Für ein besseres Verständnis nehmen wir als Beispiel die Hinzufügung einer Authentifizierung über einen externen Identitätsanbieter für die Create User API in Drupal.
- Bitte beachten Sie, dass die Drupal-API /entity/user verwendet wird, um einen Benutzer in Drupal zu erstellen.
Aktivieren Sie die API und weisen Sie Methoden und Operationen wie folgt zu:
- Der erste Schritt ist das Aktivieren der API sowie die Zuweisung der erlaubten Methoden und Operationen für die jeweilige API. Dies kann über das 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 (wie unten dargestellt).
- In unserem Beispiel muss die /entity/user-API unter „Benutzer“ aktiviert werden. Aktivieren Sie diese API, indem Sie auf die Option „Aktivieren“ davor klicken.
- Da unser Ziel ist, einen Benutzer in Drupal zu erstellen, wählen Sie folgende Konfigurationen:
- Methode: POST
- Format: json
- Authentifizierungsanbieter: rest_api_authentication.
- Die Auswahl von rest_api_authentication ermöglicht es dem miniOrange REST API Authentication-Modul, Ihre API zu authentifizieren. Klicken Sie auf die Schaltfläche Konfiguration speichern, um fortzufahren.
Konfiguration des Drupal REST API Authentication-Moduls:
- In diesem Schritt richten wir Externer Identitätsanbieter als API-Authentifizierungsmethode ein. Navigieren 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 „Externer Identitätsanbieter“.
- Geben Sie im Textfeld „User Info Endpoint“ den User Info Endpoint Ihres Identitätsanbieters ein, damit das Modul die Benutzerinformationen mit dem bereitgestellten Token abrufen kann.
- Tragen Sie im Feld „Username Attribute“ das Attribut/den Schlüssel ein, über den Ihr Identitätsanbieter den Benutzernamen sendet.
Erteilen Sie Drupal-Rollen die Berechtigung, einen Benutzer in Drupal zu erstellen:
- Bei Bedarf können Sie auch Nicht-Admin-Rollen die Berechtigung erteilen, Benutzer in Drupal zu erstellen. Weisen Sie dazu der gewünschten Drupal-Rolle die Berechtigung „Benutzer verwalten“ unter dem Berechtigungsbereich (/admin/people/permissions) Ihrer Drupal-Seite zu.
Das war’s!!!
- Nun versuchen wir, einen Benutzer in Drupal über einen API-Call mithilfe eines externen Identitätsanbieters zu erstellen.
Beispiele:
- Um einen Benutzer in Drupal zu erstellen, müssen Sie eine POST-Anfrage zusammen mit dem von Ihrem Identitätsanbieter erhaltenen Token senden.
Anfrage: POST <your_drupal_base_url>/entity/user?_format=json
Header: Token: <Token_vom_externen_Identitätsanbieter>
Accept: application/json
Content-Type: application/jsonBody: {
"name": [
{"value": "<username>"}
],
"mail": [
{"value": "<email>"}
],
"pass":[
{"value": "<password>"}
],
"status":[
{"value": "1"}
]
}CURL Anfrage-Format-
curl --location --request POST ‘<your_drupal_base_url>/entity/user?_format=json' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Token: <Token_vom_externen_Identitätsanbieter>' \
--data-raw '{
"name": [
{"value": "Username"}
],
"mail": [
{"value": "email"}
],
"pass":[
{"value": "Password"}
],
"status":[
{"value": "1"}
]
}'
- Sie können sich auch das unten stehende Bild der Postman-Anfrage ansehen:
- Eine erfolgreiche Antwort liefert die Benutzerdaten, die Sie erstellt haben. (Siehe Bild unten)
- Falls Sie einen Fehler in der Antwort erhalten, können Sie die folgende Tabelle für die Fehlerbeschreibung und mögliche Lösungen verwenden.
Fehlerantwort:
Fehler | Beschreibung |
INVALID_USER_INFO_ENDPOINT | Sie erhalten diesen Fehler, wenn Sie eine falsche User Info URL in der Modulkonfiguration angeben. |
INVALID_USERNAME_ATTRIBUTE | Sie erhalten diesen Fehler, wenn Sie das falsche Benutzername-Attribut angeben oder ein Fehler beim Abrufen des Benutzernamens auftritt. |
INVALID_TOKEN | Sie erhalten diesen Fehler, wenn das bereitgestellte Token falsch ist oder im Header fehlt. |
Artikel aus der Drupal Dokumentation.