logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll
21/05/2025, by Ivan

Drupal API Authentication modul funkcioniše tako što šalje JWT token zajedno sa vašim API zahtevima radi autentikacije. Ovaj modul koristi JSON Web Token (JWT), otvoreni standard za bezbedno predstavljanje identiteta korisnika tokom interakcije dve strane.

U ovom koraku, zapravo se korisničko ime i lozinka vašeg Drupal sajta koriste da bi se najpre dobio JWT token. Nakon što su korisničko ime i lozinka verifikovani, Drupal REST API Authentication modul kreira potpisani JSON Web Token. API zatim vraća taj token nazad klijent aplikaciji.

Kada dobijete JWT token, možete koristiti taj token za izvršavanje operacija u Drupalu dok token ne istekne. Drupal REST API Authentication modul će dozvoliti pristup samo kada primi validan JWT iz aplikacije.

JWT može biti potpisan i verifikovan korišćenjem dva algoritma – HSA i RSA.

Hajde da vidimo kako možemo koristiti JWT token za API autentikaciju u Drupalu.

 Preuzmi 

Video vodič za podešavanje:

 Drupal REST API JWT Authentication Youtube Video

Preduslovi: Preuzimanje i instalacija:

  • Preuzmite i instalirajte Drupal REST & JSON API Authentication modul.
  • REST UI: Ovaj modul vam pruža korisnički interfejs za podešavanje REST modula. 
  • Omogućite sledeće Web Services module u sekciji Extend (/admin/modules) vašeg Drupal sajta:
    • REST UI
    • RESTful Web Services
    • Serialization

    Enable modules

Koraci za podešavanje API autentikacije na bazi JWT-a:

  • Radi boljeg razumevanja, koristićemo primer dodavanja JWT autentikacije za kreiranje osnovne stranice u Drupalu pomoću /node API-ja.

Omogućite API i dodelite metode i operacije na sledeći način:

  • Prvi korak je omogućavanje API-ja i dodeljivanje metoda i operacija koje su dozvoljene za taj API. Ovo možete uraditi korišćenjem REST UI modula ili izmenom konfiguracije.
  • Da biste omogućili API korišćenjem REST UI modula, kliknite na dugme Configure kod REST UI modula (kao što je prikazano ispod)

    Settings for REST UI

  • U ovom primeru, želimo da omogućimo /node API koji se nalazi pod sekcijom content. Omogućite ovaj API klikom na Enable opciju ispred njega.

    Resources

  • Sada, pošto nam je cilj da kreiramo osnovnu stranicu na Drupalu, izaberite sledeće konfiguracije:
    • Metod: POST
    • Format: json
    • Provider za autentikaciju: rest_api_authentication
  • Odabirom rest_api_authentication omogućavate miniOrange REST API Authentication modulu da autentifikuje vaš API. Kliknite na Save Configuration da nastavite.

    Resource settings

Podešavanje API autentikacije na bazi JWT-a:

  • U ovom koraku, postavićemo JWT 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 JWT.
  • Ako želite da koristite eksterno kreirani JWT token za autentikaciju, možete to učiniti podešavanjem sledećih opcija:

    • U polje Username Attribute unesite naziv atributa u kojem će biti primljeno korisničko ime.
    • Ako želite da koristite eksterni JWT token, možete uneti i JWKS URI za verifikaciju tog JWT tokena u Drupalu.

      JWT authentication

Dodelite dozvole Drupal ulogama za kreiranje stranice:

  • Ako je potrebno, možete dodeliti ne-admin Drupal ulogama dozvolu za kreiranje osnovne stranice. To možete uraditi dodeljivanjem Drupal uloga dozvoli Basic page: Create new content u sekciji dozvola (/admin/people/permissions) vašeg Drupal sajta.

    Add permissions

To je to!!!

Sada pokušajte da kreirate osnovnu stranicu putem API poziva koristeći JWT za autentikaciju.

Primeri:

  • Prvo moramo napraviti API poziv da bismo dobili JWT. Taj token ćemo zatim koristiti za autentikaciju Drupal API-ja za kreiranje osnovne stranice.

  • JWT možemo dobiti slanjem POST zahteva koji sadrži Drupal korisničko ime i lozinku. Potrebno je da korisničko ime i lozinka budu poslati u base64 kodiranom formatu. Pogledajte format zahteva ispod.

    Zahtev: POST <your_drupal_base_url>/rest_api/id_token

    Header: Authorization: Basic base64kodirano <korisničko_ime:lozinka;>
                 Accept:  application/json

    CURL primer zahteva-

    curl --location --request POST ' <your_drupal_base_url>/rest_api/id_token' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic base64kodirano <korisničko_ime:lozinka>'

  • Možete pogledati i sliku Postman zahteva za dobijanje JWT-a iz Drupala.

Zahtev:

Postman request

  • Uspešan odgovor vraća JWT zajedno sa rokom važenja tokena. (pogledajte sliku ispod)

    Postman JWT tokent

  • Ako dobijete bilo kakvu grešku u odgovoru, pogledajte tabelu ispod za opis greške i moguća rešenja.

Greška Opis

INVALID_CREDENTIALS

Ovu grešku ćete dobiti kada je korisničko ime ili lozinka netačna.

Primer:
{
  "status": "error",
  "error": "INVALID_CREDENTIALS",
  "error_description": "Invalid username or password."
}

Autentikujte Drupal REST API-je koristeći dobijeni JWT:

  • Da biste izvršili autentikaciju pomoću JWT-a, jednostavno dodajte primljeni JWT kao Bearer token u Authorization Header.

    Zahtev: POST <drupal_base_url> /node?_format=json
    Header: Authorization:  Bearer primljeni_JWT
                 Accept: application/json   
    Telo:        
     {
      "type":[
          {"target_id":"page"}
          ],
      "title":[
          {"value":"Drupal Rest API Authentication"}
          ],
      "body":[
          {"value":"Page created using the JWT Authentication."}
          ]
    }

    CURL primer zahteva-

    curl --location --request POST   ‘<drupal_base_url>/node?_format=json’\
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <primljeni_JWT>’ \
    --data-raw '

    {
      "type":[
          {"target_id":"page"}
          ],
      "title":[
          {"value":"Drupal Rest API Authentication"}
          ],
      "body":[
          {"value":"Page created using the JWT Authentication."}
          ]
    }'
     

Primer zahteva za kreiranje stranice koristeći JWT autentikaciju:

  • Možete pogledati i Postman zahtev za isti slučaj:

    Postman headers

  • Uspešan odgovor izgledaće ovako:

    Postman response

  • Možete proveriti kreiranu stranicu u content tabu Drupala.

    Drupal page

  • Odgovori sa greškama i moguća rešenja:

Greška Opis
MISSING_AUTHORIZATION_HEADER

Ovu grešku ćete dobiti kada ne pošaljete Authorization Header u API zahtevu ili ga je vaš server uklonio iz nekog razloga.

Primer:
{
    "status": "error",
    "error":"MISSING_AUTHORIZATION_HEADE",
  "error_description": "Authorization header not received."
}

INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE

Ovu grešku dobijate kada pošaljete Authorization header, ali tip tokena nije Bearer

Primer:
{
    "status": "error",
    "error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE",
    "error_description": "Authorization header must be the type of Bearer Token."
}

TOKEN_EXPIRED

Ovu grešku ćete dobiti kada pošaljete Authorization header, ali je access token istekao.

Primer:
{
    "status": "error"
    “error”: “TOKEN_EXPIRED”
    "message": "Invalid request: Token Expired."   
}

USER_INFORMATION_NOT_FOUND

Ovu grešku ćete dobiti prilikom pokušaja preuzimanja informacija o korisniku.

Primer:
{
    "status": "error"
    “error”: “USER_INFORMATION_NOT_FOUND”
    "message": "Could Not Retrieve User Information.",  
}

INVALID_SIGNATURE

Ovu grešku dobijate kada potpis tokena nije validan.

Primer:
{
    "status": "error"
    “error”: “INVALID_SIGNATURE”
    "message": "Invalid Token signature.",   
}

Tekst preuzet sa Drupal Documentation.