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

API Key autentikacija je jedan od najjednostavnijih načina za zaštitu Drupal REST API-ja. Kada generišete API ključeve za sve korisnike, možete koristiti te ključeve za zaštitu pristupa vašim Drupal REST API-jima.

To možete postići tako što ćete korisničko ime korisnika u Drupalu i njegov API ključ slati u Authorization header-u svakog API zahteva. Drupal API Authentication modul će tada izvršiti autentikaciju na osnovu korisničkog imena i odgovarajućeg API ključa. Ovaj modul je kompatibilan sa Drupal 7, Drupal 8, Drupal 9, Drupal 10 i Drupal 11.

 Preuzmi 

Video vodič za podešavanje:

 Drupal REST API Key Authentication Youtube Video

Preduslovi: Preuzimanje i instalacija:

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

    Drupal Rest api

Koraci za podešavanje autentikacije na osnovu API ključa u Drupalu:

  • Radi boljeg razumevanja, koristićemo primer dodavanja API Key autentikacije za API za kreiranje korisnika u Drupalu.
  • Napomena: /entity/user API u Drupalu koristi se 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 dozvoljene za taj API. Ovo možete uraditi korišćenjem 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)

    api key

  • U ovom primeru potrebno je omogućiti /entity/user API. Omogućite ovaj API pomoću Enable opcije ispred njega.

    api key

  • Sada, pošto je cilj da kreiramo korisnika u 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š /entity/user API. Kliknite na Save Configuration za nastavak.

    drupal select

Kreirajte korisničko polje za API ključ u Drupalu:

Napomena: Ako koristite besplatnu verziju modula, ovaj korak možete preskočiti.

U ovom koraku postavićemo način kako se API ključ koristi za autentikaciju API poziva. Prvo, potrebno je da kreirate korisničko polje za skladištenje API ključa.

  • Idite na karticu manage field (/admin/config/people/accounts/fields) na svom Drupal sajtu.
  • Za dodavanje polja, kliknite na dugme Add field.

    manage fields

  • U dropdown meniju Add a new field izaberite Text (Plain) i unesite API Key kao labelu polja. Kliknite na Save and continue da sačuvate podešavanja.
  • Obavezno proverite da mašinsko ime atributa bude field_api_key.

    Add field

  • Završite kreiranje klikom na Save field settings i zatim na Save Settings dugme.

    Save field

    Drupal API key settings

  • Sada ćete videti dodatno tekstualno polje za API ključ u korisničkom profilu.

Podešavanje autentikacije na osnovu API ključa:

  • U ovom koraku generisaćemo API ključ, idite na API Authentication tab REST API Authentication modula. (/admin/config/people/rest_api_authentication/auth_settings)
  • Označite Enable Authentication i kliknite na Save Settings.
  • Za omogućavanje API Key autentikacije izaberite radio dugme API Key.
  • Na istom ekranu možete generisati API ključ za određenog korisnika ili za sve korisnike odjednom.
  • Sada ćemo generisati API ključ za jednog korisnika.
  • U polje Enter username unesite korisničko ime za koje želite da generišete API ključ i kliknite na dugme Generate API key for this user.
  • Sada možete videti generisani API ključ u korisničkom profilu u polju za API ključ.

    REST API create key

  • Sačuvajte API ključ jer će biti potreban prilikom autentikacije API-ja.

Dodelite Drupal ulogama dozvolu za kreiranje korisnika u Drupalu:

  • Ako je potrebno, možete dodeliti ne-admin Drupal ulogama dozvolu za kreiranje korisnika. To možete uraditi dodeljivanjem Drupal uloge dozvoli Administer users u sekciji dozvola (/admin/people/permissions) vašeg Drupal sajta.

    REST API

To je to!!!

  • Sada možete pokušati da kreirate korisnika u Drupalu putem API poziva koristeći API ključ za autentikaciju.

Primer:

  • Za kreiranje korisnika u Drupalu potrebno je da pošaljete POST zahtev zajedno sa korisničkim imenom i API ključem koji izdaje miniOrange REST API Authentication modul. Vrednosti korisničkog imena i API ključa moraju biti u base64 kodiranom formatu. Pogledajte format ispod.

    Zahtev: POST <your_drupal_base_url>/entity/user?_format=json
    Header: Authorization: Basic base64encoded <username:api_key>
                 Accept: application/json
                 Content-Type: application/json

    Telo:

    {
        "name": [
            {"value": "<korisničko_ime>"}
        ],
        "mail": [
            {"value": "<email>"}
        ],
        "pass":[
            {"value": "<lozinka>"}
        ],
        "status":[
            {"value": "1"}
        ]
    }

    CURL primer zahteva-

    curl --location --request POST  ‘<your_drupal_base_url>/entity/user?_format=json' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic base64encoded<korisničko_ime:API ključ>’ \
    --data-raw '

    {
        "name": [
            {"value": "KorisničkoIme"}
        ],
        "mail": [
            {"value": "email"}
        ],
        "pass":[
            {"value": "Lozinka"}
        ],
        "status":[
            {"value": "1"}
        ]
    }'

  • Možete pogledati i sliku Postman zahteva ispod:

    postman

  • Uspešan odgovor vraća informacije o korisniku kojeg ste kreirali. (pogledajte sliku ispod)

    Postman response

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

Greške u odgovoru:

Greška Opis
MISSING_AUTHORIZATION_HEADER

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

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

INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE Ovu grešku dobijate kada pošaljete Authorization header, ali nije u validnom formatu.
Primer:
{
  "status": "error",
  "error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE",
  "error_description": "Authorization header must be the type of Basic Authentication."
}
USER_DOES_NOT_EXIST

Ovu grešku dobijate kada modul ne pronađe nalog koji odgovara korisničkom imenu iz zahteva.

Primer:
{
  "status": "error",
  "error": "USER_DOES_NOT_EXIST",
  "error_description": "The user does not exist."
}

INVALID_API_KEY

Ovu grešku dobijate kada API ključ poslat u API pozivu ne odgovara.

Primer:
{
  "status": "error",
  "error": "INVALID_API_KEY",
  "error_description": "The API Key sent in the Request seems to be invalid or incorrect using invalid API Key."
}

USER_NAME_MISSING

Ovu grešku dobijate kada modul ne može da pronađe korisničko ime u API pozivu.

Primer:
{
  "status": "error",
  "error": "USER_NAME_MISSING",
  "error_description": "The username is missing from the request"
}

INVALID_AUTHORIZATION_HEADER

Ovu grešku dobijate kada modul ne može ispravno da dekodira header ili ne pronađe korisničko ime i API ključ u header-u.

Primer:
{
  "status": "error",
  "error": "INVALID_AUTHORIZATION_HEADER",
  "error_description": "The authorization header seems to be invalid"
}

Tekst preuzet sa Drupal Documentation.