REST API autentifikacija korišćenjem eksternog provajdera identiteta
Ako želite da zaštitite/ograničite pristup svojim Drupal REST API-jevima korišćenjem svog Identity providera, treba da koristite metodu autentikacije putem Eksternog Identity Providera.
Drupal API autentikacija putem Eksternog Identity Providera podrazumeva korišćenje tokena dobijenih od provajdera trećih strana kao što su Google, Azure AD, Keycloak, Okta, Gitlab itd., kako biste na bezbedan način pristupili Drupal REST API-jevima.
U ovoj metodi potrebno je da konfigurišete modul sa User Info Endpoint-om koji pruža vaš Identity Provider, kao i atribut korisničkog imena iz vašeg Identity Providera, nakon čega ćete moći da autentikujete sve Drupal API zahteve koristeći token koji dobijete od provajdera. Drupal REST API modul proverava primljene korisničke kredencijale u odnosu na Drupal korisnički nalog. Ovaj modul je kompatibilan sa Drupal 7, Drupal 8, Drupal 9, Drupal 10 i Drupal 11.
Video vodič za podešavanje:
Preduslovi: Preuzimanje i instalacija:
- Preuzmite i instalirajte Drupal REST & JSON API Authentication modul.
- REST UI: Ovaj modul pruža korisnički interfejs za podešavanje REST modula.
- Omogućite sledeće Web Services module iz sekcije Extend (/admin/modules) na svom Drupal sajtu:
- REST UI
- RESTful Web Services
- Serialization
Koraci za podešavanje API autentikacije pomoću eksterne aplikacije/Identity Providera:
- Radi boljeg razumevanja, kao primer ćemo koristiti dodavanje autentikacije na bazi eksternog Identity Providera za API za kreiranje korisnika u Drupalu.
- Obratite pažnju da se API /entity/user u Drupalu koristi za kreiranje korisnika.
Omogućite API i dodelite metode i operacije na sledeći način:
- Prvi korak je da omogućite API i dodelite metode i operacije koje su dozvoljene na tom API-ju. Ovo možete uraditi pomoću REST UI modula ili izmenom konfiguracije.
- Da biste omogućili API koristeći REST UI modul, kliknite na dugme Configure kod REST UI modula (kao što je prikazano ispod)
- U ovom primeru, potrebno je omogućiti /entity/user API koji se nalazi pod User. Omogućite ovaj API klikom na Enable opciju ispred njega.
- Sada, pošto nam je cilj kreiranje korisnika u Drupalu, izaberite sledeće konfiguracije:
- Metod: POST
- Format: json
- Provider za autentikaciju: rest_api_authentication
- Odabirom rest_api_authentication omogućavate da miniOrange REST API Authentication modul autentifikuje vaš API. Kliknite na Save Configuration da nastavite.
Konfiguracija modula Drupal REST API Authentication:
- U ovom koraku, podesite External Identity Provider kao metodu API autentikacije. Da biste to uradili, idite na karticu API Authentication u REST API Authentication modulu (/admin/config/people/rest_api_authentication/auth_settings)
- Označite Enable Authentication i kliknite na Save Settings.
- Ispod dugmeta Save Settings, izaberite radio dugme External Identity Provider.
- U polje User Info Endpoint unesite endpoint svog Identity Providera kako bi modul mogao da preuzme informacije o korisniku putem tokena.
- U Username Attribute unesite ključ/naziv atributa vašeg Identity Providera u kojem eksterni provajder šalje korisničko ime.
Dodelite Drupal ulogama dozvolu za kreiranje korisnika u Drupalu:
- Ako je potrebno, možete dodeliti ne-administratorskim Drupal ulogama dozvolu za kreiranje korisnika u Drupalu. To se može uraditi dodeljivanjem uloga dozvoli Administer users u sekciji dozvola (/admin/people/permissions) vašeg Drupal sajta.
To je to!!!
- Sada možete pokušati da kreirate korisnika u Drupalu putem API poziva koristeći eksterni Identity Provider za autentikaciju.
Primeri:
- Da biste kreirali korisnika u Drupalu, potrebno je da pošaljete POST zahtev zajedno sa Token-om dobijenim od vašeg Identity Providera.
Zahtev: POST <your_drupal_base_url>/entity/user?_format=json
Header: Token: <Token_dobijen_od_eksternog_identity_providera>
Accept: application/json
Content-Type: application/jsonTelo: {
"name": [
{"value": "<korisničko_ime>"}
],
"mail": [
{"value": "<email>"}
],
"pass":[
{"value": "<lozinka>"}
],
"status":[
{"value": "1"}
]
}CURL zahtev primer-
curl --location --request POST ‘<your_drupal_base_url>/entity/user?_format=json' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Token: <Token_dobijen_od_eksternog_identity_providera>' \
--data-raw '{
"name": [
{"value": "KorisničkoIme"}
],
"mail": [
{"value": "email"}
],
"pass":[
{"value": "Lozinka"}
],
"status":[
{"value": "1"}
]
}'
- Možete pogledati i sliku Postman zahteva ispod:
- Uspešan odgovor vraća podatke o korisniku kojeg ste kreirali. (pogledajte sliku ispod)
- Ako dobijete bilo kakvu grešku u odgovoru, možete pogledati tabelu ispod za opis greške i moguća rešenja.
Greške u odgovoru:
Greška | Opis |
INVALID_USER_INFO_ENDPOINT | Ovu grešku ćete dobiti kad unesete pogrešan User Info URL u konfiguraciji modula. |
INVALID_USERNAME_ATTRIBUTE | Ovu grešku ćete dobiti kad unesete pogrešan atribut korisničkog imena u konfiguraciji modula ili ako postoji greška pri pokušaju da se preuzme korisničko ime. |
INVALID_TOKEN | Ovu grešku ćete dobiti kad je token koji ste uneli pogrešan ili nedostaje u header-u. |
Tekst preuzet sa Drupal Documentation.