REST API + JS app - authentikáció?
Sziasztok,
az lenne a kérdésem, hogy ha javascript kisalkalmazást szeretnék fejleszteni úgy, hogy a szerver-oldali backend egy REST API, akkor hogy érdemes authentikálni? Az alkalmazás nem teljesen single-page app, a bejelentkezés és az alkalmazás tényleges felülete két külön felület. Első nekifutásra nincsenek jobb ötleteim a következőknél:
Egyéb ötlet?
■ az lenne a kérdésem, hogy ha javascript kisalkalmazást szeretnék fejleszteni úgy, hogy a szerver-oldali backend egy REST API, akkor hogy érdemes authentikálni? Az alkalmazás nem teljesen single-page app, a bejelentkezés és az alkalmazás tényleges felülete két külön felület. Első nekifutásra nincsenek jobb ötleteim a következőknél:
- egyszer authentikálunk, és utána session alapján dolgozunk - ami ellentmond a REST állapotmentességének
- minden REST kérésnél paraméterben elküldjük a bejelentkezési adatokat, azaz a nevet-jelszót. Ezzel az a gond, hogy a javascript app betöltődésekor át kell adni a kliensoldalnak a felhasználó által korábban megadott nevet-jelszót, hogy utána minden REST kéréshez be tudjon authentikálni. Ez azt jelenti, hogy gyakorlatilag az oldal forrásában benne lesz a jelszó. Ez nagyon nem biztonságos.
Egyéb ötlet?
Minden valamire való RESTful
A session/token alapú autentikáció szerintem teljesen korrekt.
Egy kis értelmezés a korábbi
Az, hogy a kliens egy user/pass párost, vagy egy ezzel egyenértékű (csak biztonsági szempontból kevésbé aggályos) tokent küld, az teljesen lényegtelen, a szervernek (nagyságrendileg) ugyanannyi erőforrásába kerül az azonosítás. A szerver nem tárol állapotot, ha egy kliens elküldi neki a tokent, akkor ki fogja szolgálni, a korábbi kéréseitől függetlenül. Az állapotot a kliens tárolja, hiszen ő jegyzi meg a tokent, amit el kell küldenie.
(persze, lehetne szőrszálhasogatni, hogy amikor az a token létrejött a szerveren, akkor az egy új állapot a szerverben. ne tegyük :-) )
Szerintem is használható a
Annyit tudok javasolni, hogy szedd szét az egyes klienseket külön mappára vagy subdomain-re, sokkal tisztább lesz úgy a kód. Én subdomain-t csinálok éppen, de a CORS csak IE10-től támogatott... A publikus kliens php-n keresztül fogja elérni a service-t, a másik meg single page application-el. Azért jó ez így, mert a single page application teljesen statikus, egy deka szerver oldali kód nincsen benne... Minden kérést az index.html-re irányítok, aztán onnan pushState-el módosítom az url-t. De ez csak olyan oldalakra jó, amit nem szeretnék megnézetni a google-el... (Bár már egy ideje van valami, hogy a google kereső támogatja a javascriptet is, de én ebbne nem bíznék annyira.)
Most linkeltem be a Twitter
Köszönöm a válaszokat.