REST API-authenticatie met een externe identiteitsprovider
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.
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
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.
- Voor dit voorbeeld schakelen we /entity/user in. Klik op "Enable" bij deze route.
- 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.
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.
Verleen rechten aan rollen om gebruikers aan te maken:
- Je kunt niet-beheerrollen de rechten geven om gebruikers aan te maken via
/admin/people/permissions
→ Administer users.
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/jsonBody:
{ "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:
- Een succesvolle response retourneert de aangemaakte gebruiker:
- 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.