Java EE 7 Formularbasierte Authentifizierung

8

Ich arbeite zur Zeit an einer Webanwendung, die auf Java EE 7, PostgreSQL und dem Application Server GlassFish 4 basiert. Ich muss eine formularbasierte Authentifizierung implementieren und einige URLs mit folgendem Wissen sichern:

  • die Benutzer und die Rollen / Gruppen (wie auch immer sie heißen) werden in der Datenbank gespeichert.
  • Ich wollte, dass meine Anwendung so "standard" wie möglich ist (d. h. ich verwende derzeit JSF und JPA und kein anderes Framework wie Feder, Struts ...)

Nach einigen Recherchen habe ich festgestellt, dass Java EE einen Standard-Authentifizierungsmechanismus namens JASPIC zur Verfügung stellt. Also konzentrierte ich meine Forschung auf JASPIC und las mehrere Stackoverflow Q / A und die Artikel von Arjan Tijms (Es ist fast unmöglich, einen Stackoverflow Q / A zu Java EE ohne eine seiner Antworten oder Kommentare zu finden, dank ihm von der Weg):

Meine Frage ist: Wird JASPIC mir erlauben, das zu tun, was ich brauche (Formularauthentifizierung + URL-Beschränkung mit Rollen) und lohnt es sich, es zu benutzen? Was ich meine ist: Es ist vielleicht sicherer und einfacher, einen anderen Mechanismus zu verwenden.

Arjan Tijms sagt auch, dass die Verwendung von JASPIC "eine Art Henne-und-Ei-Problem" ist und wenn JASPIC sicher zu verwenden ist (es schafft nicht mehr Probleme, als es löst), egal wie viel Code, den ich schreiben muss, ich möchte wirklich "eines der ersten Hühner" sein.

    
Unda 24.04.2014, 09:56
quelle

3 Antworten

3

Ich benutze JASPIC für meine Authentifizierung, aber JASPIC hat eine Einschränkung, mit der Sie sich messen müssen (wenn Sie den Standard haben wollen). Sie sind darauf beschränkt, keine Abhängigkeiten außerhalb der Java EE 7-API zu haben. Dies bedeutet, dass der Zugriff auf JDBC-Ressourcen, für die ein Treiber erforderlich ist, keine Funktion ist, die explizit in den Standards angegeben ist.

In meiner OpenID Connect-Implementierung habe ich Google als meinen sicheren Speicher verwendet , die mir auch das Google-Anmeldeformular zur Verfügung stellt. Das ist ein größeres Beispiel für die Verwendung von JASPIC.

Sie können eine EJB für den globalen Namespace bereitstellen und InitialContext verwenden, um die EJB abzurufen. Es würde eine Codeverdopplung geben, indem Sie den Code der EJB-Remote-Schnittstelle an zwei Stellen kopieren und sicherstellen müssen, dass die serialVersionIDs auf beiden identisch sind. Das EJB kann verwendet werden, um eine Verbindung zu den JPA-Ressourcen herzustellen, um Ihre Autorisierungsdaten abzurufen.

Verwenden Sie EJBs, weil die anderen zwei Optionen, die Sie sich vorstellen können, REST und SOAP sind, die etwas an Ihren Web-Ports offenlegen würden und eine zusätzliche Konfiguration erfordern würden, um unbefugten Zugriff zu verhindern oder sie auf einem anderen System zu platzieren. p>

Eine einfache JASPIC-Implementierung, die ich für den Fall erstellt habe, dass Sie lernen möchten, ist HTTP-Header-JASPIC-Modul , das für die Integration mit komplexeren Systemen wie SiteMinder vorgesehen ist.

    
Archimedes Trajano 10.10.2014 03:44
quelle
-4

Ich kenne JASPIC nicht, aber ich schlage vor, dass Sie sich das Shiro-Framework anschauen

Sie können so ziemlich alles machen, was Sie brauchen, basierend auf Ihrem Beitrag mit minimaler Konfiguration.

    
Yannick 24.04.2014 12:28
quelle
-4

Für die formularbasierte Authentifizierung und Autorisierung benötigen Sie JAAS. gehe durch folgende URL linK

    
vivek 01.07.2014 08:12
quelle