2013-04-30 16 views
7

Ostatnio zastanawiałem się, jak uzyskać poprawny układ webfameworków/aplikacji. Powoli przechodzę do programowania scala i funkcjonalnego (pochodzącego z Pythona z CherryPy). Naturalne więc było zaglądanie do Play, ponieważ jest to najbardziej rozpowszechniony framework (teraz, nawet gdy Typesafe go adoptował). Możesz mnie poprawić, jeśli czegoś tu nie ma.Restful (i bezstanowa) Auth z Play Framework i Scala

Tak więc gra naprawdę obejmuje ideę bezpaństwowych aplikacji internetowych i ciężko jest mi owijać głowę w kwestii uwierzytelniania i autoryzacji. Teraz po kilku kopaniu online (The definitive guide to form-based website authentication) doszedłem do wniosku, że uwierzytelnianie i autoryzacja muszą być wykonywane przy każdym wywołaniu mojego backendu (JSON-RPC lub czymkolwiek), odejście od starego pomysłu na sesję-cookie.

Jakie jest najlepsze podejście do osiągnięcia tego dzięki dzisiejszej technologii?

A co:

myślałem o „proste” DigestAuth jak to jest sprawdzony i powszechne, ale to ma to podobny nastrój starej, zardzewiałej podstawowego uwierzytelniania.

Dziękujemy!

Odpowiedz

0

Jak dla mnie używam tego w moim bieżącym projekcie https://github.com/t2v/play20-auth, działa dobrze.

+0

To naprawdę nie robi spokojnego robi to? Wygląda na to, że jest to jedynie poprawka do nie tak bezpiecznego własnego pliku cookie służącego do uwierzytelniania. – AlessandroEmm

+0

@AlessandroMeyer Mogę powiedzieć, że jest to prawie spokojny, ale nie czysto spokojny, jak wiemy, spokojny oznacza bezpaństwowców i nie możemy mieszać go w tym samym czasie, ponieważ "uwierzytelnione" jest stanem, ale z drugiej strony może być realizowane w różne warstwy. – arussinov

+0

masz rację, ale konieczność uwierzytelnienia za każdym razem (skrót lub podstawowa autoryzacja) byłaby prawdziwie bezpaństwowa i zastanawiałem się, czy to rozsądne podejście. – AlessandroEmm

2

Możesz łatwo uzyskać rozwiązanie do pracy. Ale nie jest dobry. Wydaje się, że korzyści płynące z bezpaństwowości po stanową nie stanowią potrzeby dzielenia się sesjami. Łatwy w skalowaniu. Ale czy uwierzytelnianie dla każdego połączenia jest kosztowne. Czasami nawet dodać kilka dodatkowych odczytów bazy danych. Spowoduje to spowolnienie reakcji. Jeśli chcesz buforować wynik uwierzytelnienia, nie będzie żadnej różnicy z rozwiązaniem z obsługą stanu. Jak moja opinia. Nie można wdrożyć kontroli dostępu opartej na rolach w sposób bezpaństwowy!

+0

Znaczy Zalogowanie się na podstawie ról jest nie "nie" w tak zwanym nowoczesnym "web-dev"? – AlessandroEmm

+0

Możesz umieścić stan w szybko replikowalnym silniku pamięci podobnym do REDIS. wtedy każdy pojedynczy proces gry jest bezpaństwowy, co ułatwia horyzontalną skalę. –