2013-04-30 12 views
7

Ich habe kürzlich darüber nachgedacht, wie ich meinen Webframework/Application-Stack richtig machen kann. Ich gehe langsam zu scala und funktionaler Programmierung über (von Python mit CherryPy kommend). Daher war es natürlich, Play zu betrachten, da es sich um das am weitesten verbreitete Framework handelt (jetzt sogar von Typesafe übernommen). Fühl mich frei, mich zu korrigieren, wenn ich hier etwas verpasse.Restful (und Stateless) Auth mit Play Framework und Scala

Also spielt die Idee der staatenlosen Webapps wirklich mit und ich kann mich nur schwer mit der Authentifizierung und Autorisierung herumschlagen. Jetzt nach einigen Online-Graben() kam ich zu dem Schluss, dass Authentifizierung und Autorisierung bei jedem Aufruf an mein Backend (JSON-RPC oder was auch immer) erfolgen muss, weg von der alten Session-Cookie-Idee.

Nun, was ist der beste Ansatz, um dies mit der heutigen Technologie zu erreichen?

Und was ist:

Ich dachte über „einfache“ DigestAuth wie sie und verbreitet bewährte, aber dann hat es dieses ähnliches Gefühl auf die alten und rostigen Grund Auth.

Vielen Dank!

Antwort

0

Für mich benutze ich das in meinem aktuellen Projekt https://github.com/t2v/play20-auth, funktioniert gut.

+0

Es tut nicht wirklich erholsam es? Es sieht so aus als wäre es nur ein Fix für das nicht so sichere eigene Authentifizierungs-Cookie. – AlessandroEmm

+0

@AlessandroMeyer Ich kann sagen, dass es fast erholsam ist, aber nicht rein erholsam, wie wir es ruhig als staatenlos bezeichnen und wir können es nicht zur selben Zeit vermischen, weil "authentifiziert" ein Zustand ist, aber andererseits kann es in realisiert werden verschiedene Schichten. – arussinov

+0

Sie haben Recht, aber jedes Mal authentifizieren zu müssen (Digest oder Basic Auth) wäre wirklich staatenlos und ich frage mich, ob dies ein vernünftiger Ansatz ist. – AlessandroEmm

2

Sie können problemlos eine Arbeitslösung erhalten. Aber, nicht gut. Es scheint, dass der Vorteil von staatenlos zu stateful keine Bedürfnisse des Teilens von Sitzungen ist. Einfach zu vergrößern. Aber ist die Authentifizierung für jeden Anruf teuer? Manchmal fügen Sie sogar einige zusätzliche Datenbankleseoperationen hinzu. Dies wird die Reaktion verlangsamen. Wenn Sie das Authentifizierungsergebnis zwischenspeichern möchten, gibt es keinen Unterschied zu einer Stateful-Session-Lösung. Als meine Meinung. Sie können eine rollenbasierte Zugriffssteuerung nicht auf staatenlose Weise implementieren!

+0

Bedeutet Rollenbasiertes Login ist ein "Nein" im so genannten modernen "Web-Dev"? – AlessandroEmm

+0

Sie können den Status in eine schnell replizierbare Speicher-Engine wie REDIS setzen. dann ist jeder einzelne Spielprozess staatenlos, was die horizontale Skalierung erleichtert. –

Verwandte Themen