Laravel, API, tokeni

Dakle(m)… Laravel, šta’š…
U tablici users napravih polje ‘api_token’ (varchar, 250).
Novi korisnik se registrira, napravim api_token (napravih metodu za to) i spremim ga u gore navedeno polje (svaki korisnik ima unique api_token).
Kao key koristim hash i username.
E sad, kad hoću dohvatit neki podatak vezan uz određenog korisnika putem JS-a (axios, jQuery, svejedno), koristim url poput:
`

http://nekiurl.com/api/test?api_token=api_token_iz_tablice_korisnika&key=hash(username)

`
Na backendu skripta provjerava da li api_token i key odgovaraju podacima u bazi i ako da - onda šalje json kao odgovor. Ako ne - šalje json unathorized.

Cilj je da ti API pozivi budu dostupni i van aplikacije (dakle da ih korisnik po želji može koristiti i van aplikacije kako bi updatirao podatke unutar aplikacije)

Obzirom da je Laravel u pitanju, da li je to ispravan način? Ili postoje nekakvi moduli/modeli/klase koje to odrađuju automatski? (Passport mi nije poslužio)

Sa client-a salji post i to stavi isto u provjeru, ako je ajax i ako je post.

Api bi slozio na nacin da bi mi to bio jedan modul i untra bi imao controllere.

Jedna funkcija u controlleru jedan api poziv i modeli za dohvat podataka ili azuriranje itd.

I moras imati routing ako ti dolazi u url/api da ide na modul koji odradjuje api.

Sve to imam (route/controller/model)
Samo me zanima da li je kao ideja ok (api token/key putem url query-a) ili ima neka shema koju ne znam?
Evo ovo za slanje i posta uz token/key mi je novo, ali mi se čini nepotrebno? Samo mislim, ne tvrdim :slight_smile:

Post mora biti zbog sigurnosti.

Aaaaaaaaaaaaaaa… :smiley:
Ajd idem i to staviti. Hvala.

Ukoliko su korisnici druge aplikacije, kao mobilne ili web to je OK. Sa time sto web aplikacija mora koristiti nekakvu “proxy” skriptu. Na tu proxy skriptu applikacija salje http request, proxy skripta na taj request dodaje API kljuc i prosljedjuje ga dalje na tvoj API endpoint. API kljuc ne smije biti vidljiv u HTML pa zato ide u proxy skriptu.

Ako su korisnici oni koji surfaju po tvom webu ondak zapravo nema potrebe za tokenima, klasicna metoda sa sesijama (username/pass) je ok., je svako se mora autentificirati da bi mu tvoja aplikacija poslala kljuc. A kljuc svaki pust isti!? U pravilu takvi kljucevi bi trebali imati limitiran vijek trajanja.

Pogledaj JWT - JSON web token. Ima i paketa za Laravel koji rade uredno.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja