ugrás a tartalomhoz

REST API + JS app - authentikáció?

Crystal · 2013. Ápr. 28. (V), 14.27
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:
  • 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?
 
1

Minden valamire való RESTful

MadBence · 2013. Ápr. 28. (V), 16.25
Minden valamire való RESTful API rendelkezik valamilyen autentikációval. Részlet a REST állapotmentességéről (Wikipedia):
The client–server communication is further constrained by no client context being stored on the server between requests. Each request from any client contains all of the information necessary to service the request, and any session state is held in the client.

A session/token alapú autentikáció szerintem teljesen korrekt.
3

Egy kis értelmezés a korábbi

MadBence · 2013. Ápr. 29. (H), 15.59
Egy kis értelmezés a korábbi hozzászólásomhoz:

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 :-) )
2

Szerintem is használható a

inf3rno · 2013. Ápr. 29. (H), 04.18
Szerintem is használható a munkamenet, senki nem fog lemondani róla csak azért, mert a rest állapotmentes...

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.)
4

Most linkeltem be a Twitter

Poetro · 2013. Ápr. 29. (H), 16.57
Most linkeltem be a Twitter feedbe is: What Is Idempotent in REST?, hátha segít.
5

Köszönöm a válaszokat.

Crystal · 2013. Május. 1. (Sze), 14.57
Köszönöm a válaszokat.