Authentication/UserPrincipal mit Rest Webservice?

navino

Aktives Mitglied
Hallo zusammen,

ich hätte da mal eine Frage ob es möglich ist einen UserPrincipal anhand eines Webservices-Request zu erstellen und in den Context einzuhängen. Momentan mache ich einen
request.login(username, password);
über die Weboberfläche. Anschließend kann ich den UserPrinicipal aus dem EJBContext lesen und in den SessionBeans abfragen.
Die Idee ist, das ich dann die authorization nur an einer Stelle prüfen muss, nämlich in der SessionBean.
Was mir halt fehlt wäre halt der login. Oder könnte ich auch den
request.login(username, password); benutzen?

Gruß
navino

www.navino.de
 

Steven Hachel

Bekanntes Mitglied
Läuft das in einem Applikation Server oder Spring-Boot?
Bei einem Applikation Server haste doch ne web.xml und darin befindet sich der Bereich für den Security-Constraint, oder? Darin hast du doch auch eine Login Config definiert. Sobald das geschehen ist, bekommst du doch, sobald du als erstes den Restcall machst, die Aufforderung zum Login...
Login kommt natürlich nur, solange du die URL des RestCalls nicht expliziet exludest und zwar im web-resource-collection des Security Constraints.

Bei Spring-Boot ist es nicht anders. Da wirst du auch zum Login aufgefordert, nach dem du den Controller aufrufst...

Oder habe ich dich nicht ganz verstanden? ^^
 

navino

Aktives Mitglied
Hallo,

die Anwendung läuft auf einem Wildfly, Spring benutze ich nicht. Ja man kann natürlich auch die deklarative Security in der web.xml machen, hatte ich auch erst. Habe das aber nun alles selber gemacht über Filter, JSF-Exceptionhandler um eine bessere Kontrolle zu haben. Die deklarative Security steht ja vor allem.
Meine Idee ist halt, das ich nur an einer Stelle mich um die authorization kümmern möchte. Ich werde mir das noch einmal mit der web.xml anschauen was da so alles möglich ist ...

Gruß
navino

www.navino.de
 

Steven Hachel

Bekanntes Mitglied
Die web.xml wäre in deinem Fall ja genau die "eine" Stelle, worin du das konfigurierst. :)
Alles andere wäre ja dann zu komplex, da du dann jeden RestController mit zB. einer Security Annotation deklarieren müsstest, um etwas per Interceptor, also einen eigenen SecurityService in etwa, zu realisieren.
Um das ganze dann weiter zu spinnen, könntest du mit solch einem Interceptor zum Beispiel den Zugriff einiger Methoden innerhalb einer EJB oder CDI beeinflussen und darauf reagieren.

viele Spaß beim probieren. :)
Steven
 

navino

Aktives Mitglied
Momentan habe ich ja die Prüfung der autorization in den SessionBeans, da sollen sie ja auch eigentlich bleiben. In der Webanwendung die mit jsf auf die Sessionbeans zugreift, also die ManagedBean habe ich keine Prüfung. Jetzt kommt aus meiner Sicht (die könnte ja auch falsch sein) ein weiterer Client hinzu, nämlich ein Webservice-Client. Für diesen muß ich auf dem Server eine Webservice erstellen.
Und angenommen auf der Webseite und über den Webservice soll eine und die selbe Methode einer SessionBean aufgerufen werden, dann wäre ja die SessionBean immer das Teil Software welches in beiden Fällen angesprochen wird. Daher meine Idee mit dem UserPrincipal in beiden Fällen.


Gruß
navino
 

Steven Hachel

Bekanntes Mitglied
Also, über die web.xml kannst du es ja so definieren, dass entweder beim Zugriff auf deinen Service oder JSF oder beides ein von dir geschriebenes Login Formular oder der Login Dialog vom Server kommt.
Du bekommst halt nur dann einen UserPrincipal, wenn du dich erfolgreich angelmeldet hast... und dieser steht dir dann in alle SessionBeans zur Verfügung.
 

navino

Aktives Mitglied
Hallo,

ich habe beim googlen jemanden gefunden, der die selbe Idee hatte:
http://stackoverflow.com/questions/...cipal-from-httpservletrequest-into-ejbcontext

Im Webservice habe ich folgendes gemacht:

@Context
HttpServletRequest request;

@EJB
private UserService userService;

dann ein request.login(user, password) aus dem httpheader.

Klappt wunderbar und habe mein login-Modul wiederverwendet, und die Authorization nur in der EJB!!

Viele Grüße
navino
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JSF Form based authentication mit JSF templating Allgemeines EE 2
S Servlet Authentication Filter Allgemeines EE 0
S Principal, Authentication, Security und alles im JBoss 7 Allgemeines EE 16
F Form based authentication Allgemeines EE 4
Q Form Based Authentication - Session Attribute ? Allgemeines EE 2
Q Form Based Authentication erweitern? Custom JDBCRealm!?! Allgemeines EE 14
F Form Based Authentication Allgemeines EE 2
D Fehler wegen Rest-Schnittstelle Allgemeines EE 4
J rest-schnittstelle Allgemeines EE 3
LimDul Rest-Client/DTOs aus JSON Ergebnis generieren Allgemeines EE 3
M einfacher REST Webservice Allgemeines EE 4
M Rest mit Java 11 Allgemeines EE 6
OnDemand REST Json Response Mapping ist null Allgemeines EE 2
L Tcp-IP Server an Rest Schnittstelle Allgemeines EE 20
K Unterschied zwischen JSP & Servlet gegenüber REST mittels JAX-RS Allgemeines EE 1
L Spring REST Application (Data Retrive) API und Architectur hilfe Allgemeines EE 11
C Servlet Tomcat/Jersey findet REST-Service nicht Allgemeines EE 3
T Servlet REST-Full Object per QueryParam Allgemeines EE 2
P ArrayIndexOutOfBoundsException: 48188 bei REST-WebServices Allgemeines EE 1
S Jersey, REST: Vererbung Allgemeines EE 0
G RMI vs REST Allgemeines EE 12
F REST-Service: GET erkennt Veränderungen an der DB nicht. Allgemeines EE 2
G REST Webservice Allgemeines EE 11

Ähnliche Java Themen

Neue Themen


Oben