Autorizacija „RESTful“ HTTP API, 401 WWW autentifikavimas

Sukuriu „RESTful“ paslaugą, kad galėčiau pateikti duomenis interneto programoje. Turiu du susijusius klausimus.

1. Kaip elgtis su neteisėtais prašymais?

Atsakysiu į užklausas su šiais kodais:

  • Ar šaltinis yra atviras ir ar jis randamas? 200 Gerai
  • Reikia turėti autentiškumą, kad galėtumėte pasiekti išteklius? 401 Neleistinas
  • Neturite prieigos prie išteklių kategorijos? 403 Draudžiama
  • Ar turite prieigą prie išteklių kategorijos, bet ne su šiuo konkrečiu šaltiniu? 404 Nerasta , kad žmonės negalėtų sužinoti apie išteklių, kuriems jie neturi prieigos, buvimą.
  • Ar nėra išteklių? 404 Nerasta

Ar tai rekomenduojamas elgesys su atsipalaidavimu?

2. Ką turėtų turėti WWW-Authenticate antraštė?

Aš perskaičiau „ Wikipedia“ (galbūt ne pats tiksliausias šaltinis, bet jis man naudingas), kad 401 atsakyme turėtų būti WWW-Authenticate , tačiau toliau ieškodamas aš tikrai negalėjau rasti jokių išteklių, kurie parodytų, ką reiškia reikšmė ir kas tai turėtų būti.

Radau keletą klausimų apie SO ir forumo temas apie šią antraštę, ir jie visi susiję su „OAuth“, siūlome nenaudoti būsenos kodų 401 arba pasakyti, kad galite ką nors padaryti.

Kokią vertę turėtų turėti ši antraštė?

32
17 июля '13 в 1:10 2013-07-17 01:10 Aidiakapi yra nustatytas liepos 17 d . 13 val. 1:10 2013-07-17 01:10
@ 2 atsakymai

Jei norite atsakyti į klausimus:

Kaip elgtis su neteisėtais prašymais?

Tai, kaip jūs apibūdinate, yra gana rekomenduojamas būdas atsipalaiduoti. Kiek aš matau, tai nieko blogo.

Kurioje WWW autentifikavimo antraštėje turėtų būti 401 atsakymas?

Apskritai, WWW-Authenticate antraštė nurodo klientui, kokio tipo autentifikavimą priims serveris. Jei klientas pateikia neteisėtą prašymą, o tai reiškia, kad jis siunčia užklausą su trūkstama arba negaliojančia Authorization antrašte, serveris naudos WWW-Authenticate kad informuotų klientą, kurią autentifikavimo schemą ji priims (t. Y. „Basic“, „Digest“ arba „OAuth“) ir kuriam srityje.

Įsivaizduokite, kad tai atrodo kaip tam tikras identifikavimo klausimas ar skambutis iš serverio, ty kažkas panašaus į „Kas tu esi?“. arba „Įrodyti, kas esate, suteikdami kredencialus taip!“.

Pavyzdys: WWW-Authenticate: Basic realm="My App"

Čia serveris informuoja klientą, kad naudojasi pagrindine autentifikavimo schema. Apimtis nėra nieko daugiau kaip eilutė, identifikuojanti saugomą serverio vietą.

19
17 июля '13 в 1:30 2013-07-17 01:30 atsakymą pateikė Benjiman liepos 17 d., 13 val. 13:30 2013-07-17 01:30

Remdamasis savo tyrimais („googling“), nusprendžiau siųsti: „Newauth realm =“ naudoti prisijungimo raktą “.

Svetainėje http://greenbytes.de/tech/tc/httpauth/#unknown yra skirtingų auth metodų pavyzdžiai, ir aš neradau nieko, kas apibūdintų „get auten token“, todėl manau, kad tai "Newauth".

border=0

Taip pat man svarbu: jis nesukuria kvietimo prisijungti prie kliento.

0
23 марта '15 в 13:41 2015-03-23 13:41 atsakymas pateikiamas sigi kovo 23 d., 15 val. 13:41 2015-03-23 ​​13:41