Puncte:0

Secvența de acțiuni la autentificarea cookie-urilor pe site-ul Drupal

drapel jp

Există un site drupal 9 care are un punct final REST care poate fi accesat pentru utilizatorii conectați (nu pentru cei anonimi).

Și, este necesar să faceți o solicitare GET către punctul final folosind autentificarea cookie.

Ați putea clarifica care este algoritmul corect al acestei solicitări?

Am încercat să o fac în două moduri.

Calea #1.

Trimiteți o solicitare POST către utilizator/autentificare cu acreditări și obțineți jetonul CSRF, apoi utilizați jetonul din anteturile solicitării GET către punctul meu final. Nici un rezultat.

Calea #2.

Trimiteți o solicitare POST către utilizator/autentificare cu acreditări, apoi trimiteți o solicitare GET către sesiune/token și obțineți simbolul de la. După aceea, utilizați acest token din sesiune/token în solicitarea mea GET.

De asemenea, nici un rezultat.

În ambele cazuri, returnează eroarea 401 (din Insomnia) sau eroarea 403 (din JavaScript extern).

Antetele mele către cererea GET sunt

  antete: {
    „Content-Type”: „application/json”,
    „X-CSRF-Token”: simbol
  }

Autentificarea cookie-ului este verificată pentru punctul meu final REST în REST UI.

ce fac greșit?

Kevin avatar
drapel in
Dacă căutați cookie-uri, le transmiteți înapoi în fiecare solicitare? Este ruta activată pentru autentificarea cookie-urilor? https://www.drupal.org/docs/8/core/modules/rest/3-post-for-creating-content-entities
Yakimkin Roman avatar
drapel jp
Da, ruta este activată pentru autentificarea cookie-urilor. Iată descrierea acestuia: metode: GET formate: json autentificare: basic_auth, cookie Despre transmiterea cookie-urilor înapoi - nu, dau jetoane. return fetch(calcUrl, { metoda: „GET”, antete: { „Content-Type”: „application/json”, „X-CSRF-Token”: simbol } }) })
drapel cn
Încercați să dați și prăjitura înapoi
Puncte:1
drapel in

Când punctul final necesită autentificarea cookie-urilor, ar trebui să transmiteți cookie-ul pe care îl obțineți din postarea dvs. de conectare cu următoarele solicitări GET.

CSRF nu are nimic de-a face cu auth, este doar o apărare de atac CSRF.

Puncte:1
drapel ph

Trebuie să faceți referire la cookie-ul stocat. Iată un exemplu folosind curl:

curl --header „Content-type: application/json” --request POST -s -c cookie.txt --data-binary „{ „nume”: „nume utilizator”, „pass”: „parolă” }’ https: //example.com/user/login

De aici veți obține cookie-ul în cookie.txt și token-ul în răspunsul json.

Apoi puteți face o cerere de obținere ca aceasta (cererile de obținere nu au nevoie de un token CSRF):

curl -s -X GET -b cookie.txt --header „Tipul conținut: aplicație/json”...

și o cerere de postare ca aceasta:

curl -s -X POST -b cookie.txt --header „Tipul conținut: aplicație/json” --header „X-CSRF-Token: $token”

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.