logo

Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

REST API-authenticatie met een externe identiteitsprovider

02/09/2025, by Ivan

Als je toegang tot je Drupal REST API’s wilt beveiligen of beperken met je eigen identiteitsprovider, kies dan voor authenticatie via een externe identiteitsprovider.

Authenticatie van Drupal API’s met behulp van een externe identiteitsprovider houdt in dat tokens van externe providers zoals Google, Azure AD, Keycloak, Okta, GitLab enz. worden gebruikt om veilig toegang te krijgen tot Drupal REST API’s.

Bij deze methode configureer je de module met het User Info Endpoint van je identiteitsprovider en geef je het gebruikersnaam-attribuut op. Daarmee kun je alle Drupal API-verzoeken authenticeren met het token dat door je provider wordt geleverd. De Drupal REST API-module verifieert de ontvangen gebruikersgegevens tegenover het Drupal-gebruikersaccount. Deze module is compatibel met Drupal 7, 8, 9, 10 en 11.

Downloaden

Installatievideo:

Vereisten: Download en installatie:

  • Download en installeer de Drupal REST & JSON API Authentication-module.
  • REST UI: biedt een gebruikersinterface voor het configureren van de REST-module.
  • Schakel de volgende Web Services-modules in via het tabblad "Uitbreiden" (/admin/modules):
    • REST UI
    • RESTful Web Services
    • Serialization
    Modules installeren

Stappen om API-authenticatie in te stellen via een externe identiteitsprovider:

  • We gebruiken als voorbeeld het toevoegen van externe authenticatie aan de API voor gebruikersaanmaak in Drupal.
  • Let op: de /entity/user-API van Drupal wordt gebruikt om gebruikers aan te maken.

Schakel de API in en wijs methoden en bewerkingen toe:

  • Schakel de gewenste API in en wijs toegestane methoden toe via de REST UI-module of door configuratie aan te passen.
  • Klik in de REST UI op Configureer bij de gewenste bron.
    REST UI
  • Voor dit voorbeeld schakelen we /entity/user in. Klik op "Enable" bij deze route.
    Node toevoegen
  • Selecteer de volgende instellingen:
    • Methode: POST
    • Formaat: json
    • Authenticatieprovider: rest_api_authentication
  • Selecteer rest_api_authentication zodat de miniOrange-module het verzoek kan authenticeren. Klik op Save configuration.
    API-configuratie

Configuratie van de Drupal REST API Authentication-module:

  • Stel nu Externe identiteitsprovider in als authenticatiemethode via /admin/config/people/rest_api_authentication/auth_settings:
    • Vink Enable Authentication aan en klik op Save Settings.
    • Selecteer External Identity Provider als methode.
    • Voer het User Info Endpoint in van je provider.
    • Voer het Username Attribute in waarmee de gebruikersnaam wordt verzonden.
      Externe authenticatie

Verleen rechten aan rollen om gebruikers aan te maken:

  • Je kunt niet-beheerrollen de rechten geven om gebruikers aan te maken via /admin/people/permissionsAdminister users.
    Rechten toekennen

Dat is alles!

  • We testen nu de aanmaak van een gebruiker via een API-call, geauthenticeerd via een externe identiteitsprovider.

Voorbeelden:

  • Je moet een POST-verzoek doen met het token van je identiteitsprovider.

    Request: POST <jouw_drupal_url>/entity/user?_format=json
    Headers:
    Token: <token_van_externe_provider>
    Accept: application/json
    Content-Type: application/json

    Body:

    {
      "name": [ { "value": "<gebruikersnaam>" } ],
      "mail": [ { "value": "<e-mailadres>" } ],
      "pass": [ { "value": "<wachtwoord>" } ],
      "status": [ { "value": "1" } ]
    }

    CURL-aanroep:

    curl --location --request POST '<jouw_drupal_url>/entity/user?_format=json' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Token: <token_van_externe_provider>' \
    --data-raw '{
      "name": [ { "value": "Gebruiker" } ],
      "mail": [ { "value": "email@voorbeeld.nl" } ],
      "pass": [ { "value": "Wachtwoord123" } ],
      "status": [ { "value": "1" } ]
    }'
  • Zie onderstaand voorbeeld van een Postman-aanroep:
    Postman request
  • Een succesvolle response retourneert de aangemaakte gebruiker:
    Postman response
  • Bij foutmeldingen kun je onderstaande tabel raadplegen voor uitleg:

Foutmeldingen:

Fout Omschrijving
INVALID_USER_INFO_ENDPOINT De opgegeven user info URL is onjuist.
INVALID_USERNAME_ATTRIBUTE De gebruikersnaam-attribuutwaarde is onjuist of ontbreekt.
INVALID_TOKEN Het token is ongeldig of ontbreekt in de header.

Artikel afkomstig uit de Drupal-documentatie.