Spring Security

MQue

Top Contributor
Hallo,

ich verwende in meiner Web Applikation Spring Security und es klappt auch einwandfrei, Jetzt möchte ich aber einen Eintrag in eine Datenbank schreiben, sobald jemand eingelogged hat,
Ich hab Spring Security so configuriert, wie hier angegeben, also ganz einfach: 7.The Security Filter Chain

Das http Element habe ich so konfiguriert wie hier angegeben: 2.Security Namespace Configuration

Es macht beim einloggen also alles Spring, vom Bereitstellen der login-Page bis zum Weiterleiten auf die default- page nach dem erfolgreichen login.

Meine Frage wäre jetzt, wie kann ich in diesem lifecycle eingreifen, sodass nach dem erfolgreichen Login eine Methode aufgeerufen wird, in der ich dann username in die Datenbank schreiben kann.

Hat da jemand eine Idee?
lg
 

MQue

Top Contributor
Ich habe eine Möglichkeit gefunden, mein Problem ist, dass ich in meiner Applikation Spring 2.0.5 verwende und Spring3.0 die Möglichkeit bietet,
Kann man die verschiedenen Spring- Versionen mischen, also ausser Spring Security (3.0) alles 2.0 oder ist das keine so gute Idee?
lg
 

MQue

Top Contributor
Ganz ist es mir nicht klar, einen Eintrag in die DB oder in ein File zu schreiben, wenn sich jemand einlogged, ist ja keine spezielle Sache, trotzdem find ich kaum bis nichts dazu. Es gibt zwar ein paar Provider (DaoAuthenticationProvider, RemoteAuthenticationProvider, usw.), aber die sind dazu da, den usernamen und das password an verschiedenen Orten zu suchen. Ich bräuchte aber eine Methode, die nach der Überprüfung von username und password durch den authentication-provider (unten) aufgerufen wird!!??


Code:
<authentication-provider>                                                                                      
                <user-service>
                    <user name="test" password="testpassword" authorities="ROLE_USER, ROLE_ADMIN, ROLE_TELLER" />           
                    <user name="test1" password="test1password" authorities="ROLE_USER" />
                </user-service>
            </authentication-provider>
 

MQue

Top Contributor
Hab mirs angesehen, aber da gehts eher um das, ob ein Benutzer eine Methode aufrufen darf oder nicht, so weit ich das jetzt überblicken konnte, ich bräuchte aber nach dem erfolgreichen einloggen eine Methode, in welcher ich username in eine Datei/DB schreiben kann.
Ich habe jetzt auch schon im Spring- Forum die Frage gestellt, es gibt aber anscheinend keine einfache Antwort, was ich irgendwie komisch finde, denn Login loggen ist ja nicht unbedingt was, das man nie braucht, oder sehe ich das falsch?

lg
 

byte

Top Contributor
Du hast doch sicherlich irgendwo Deinen eigenen UserDetailsService implementiert. Du kannst das doch einfach in der loadUserByUsername() Methode implementieren!?

Edit: Ansonsten kannst Du Dir auch jederzeit den aktuellen User aus dem SecurityContext holen. Du könntest also einfach einen Interceptor hinter Deinen Controller hängen, der den User ausliest und loggt (bin mal davon ausgegangen, dass Du Spring MVC nutzt).
 
Zuletzt bearbeitet:

MQue

Top Contributor
(bin mal davon ausgegangen, dass Du Spring MVC nutzt).

Leider nicht, es wird ein normales Servlet für die ClientCommunication verwendet, dieses Servlet ruft dann Services auf, die dann was in die Datenbank speichern.
Architektur ist nicht von mir, mir ist klar, dass mans so nicht macht aber es ist leider schon so vorhanden. Gibt es hier vielleicht noch eine andere Lösung?

Besten Dank,


das ist die SpringSecurity.xml
Code:
<global-method-security secured-annotations="enabled" jsr250-annotations="enabled"/>                        
            <http auto-config='true'>                                                                                       
                <intercept-url pattern='/index.jsp' access="IS_AUTHENTICATED_ANONYMOUSLY" requires-channel="https" />
                <intercept-url pattern='/**' access='ROLE_USER' requires-channel="https" />
                <form-login login-page='/index.jsp' default-target-url='/frame.jsp' always-use-default-target='true' />    
            </http>
            <authentication-provider>                                                                                       
                <user-service>
                    <user name="test" password="testpassword" authorities="ROLE_USER, ROLE_ADMIN, ROLE_TELLER" />          
                    <user name="test1" password="test1password" authorities="ROLE_USER" />
                </user-service>
            </authentication-provider>

Filter in web.xml:
Code:
<filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 
Zuletzt bearbeitet:

MQue

Top Contributor
OK, so wie unten kann ich mir den User schon mal holen, das kann ich in das Servlet schreiben, wenn sich der User das erste mal einlogged:

Code:
final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName();


am besten wäre ein XML- Fragment, welches ich in die SpringSecurity.xml schreibe und welches mir bei einem erfolgreichem einloggen einmalig eine Methode aufruft.
Weiß jemand ob es sowas gibt?
 

byte

Top Contributor
Naja, das hier wird ja sicher so nicht bleiben:
[xml] <user-service>
<user name="test" password="testpassword" authorities="ROLE_USER, ROLE_ADMIN, ROLE_TELLER" />
<user name="test1" password="test1password" authorities="ROLE_USER" />
</user-service>
[/xml]

Für gewöhnlich implementiert man sich ja einen eigenen User-Service. Dort kannst Du Dein Logging dann unterbringen.
 

MQue

Top Contributor
Naja, das hier wird ja sicher so nicht bleiben:
[xml] <user-service>
<user name="test" password="testpassword" authorities="ROLE_USER, ROLE_ADMIN, ROLE_TELLER" />
<user name="test1" password="test1password" authorities="ROLE_USER" />
</user-service>
[/xml]

Für gewöhnlich implementiert man sich ja einen eigenen User-Service. Dort kannst Du Dein Logging dann unterbringen.

Ursprünglich war angedacht, username und password in der Datenbank zu speichern, was ja ein leichtes ist mit dieser Implementierung, wurde aber bis auf weiteres wieder verworfen, daher nehme ich an, dass es mal so bleibt.
Wüstest du vielleicht einen Link, wo ich finden kann, wie man einen eigenen User-Service implementiert und dann in den <authentication-provider> einhängt?

Besten Dank,
 

byte

Top Contributor
Du musst einfach nur das Interface
Code:
UserDetailsService
implementieren. Das Interface hat die Methode
Code:
public UserDetails loadUserByUsername(String userId)
und liefert entsprechend das User Objekt, dass dann in die Authentication gehängt wird.

Wenn Du die Klasse geschrieben hast, brauchst Du sie nur als eigene Bean in Spring deklarieren und mit Deinem AuthenticationProvider verdrahten. Wie das geht, steht in der Reference Documentation von Spring Security.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Spring Security: Wie kommt 'UserDetails' an Username und Passwort ran? Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8
R Spring Security: Authentication & Permissions Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Security: Run-as replacement Einsatzbereich? Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Spring Security Config File anpassen Frameworks - Spring, Play, Blade, Vaadin & Co 1
S Spring Security mit oauth2 in lokaler Konfiguration principal mocken Frameworks - Spring, Play, Blade, Vaadin & Co 0
M Java Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Security Login with Credentials Frameworks - Spring, Play, Blade, Vaadin & Co 0
OnDemand Spring Security/Boot/Vaadin Cookie Problem bei iFrame Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Spring security - 403 bei Role Access Regel Frameworks - Spring, Play, Blade, Vaadin & Co 6
Dimax Spring Security CSRF-Token Frameworks - Spring, Play, Blade, Vaadin & Co 5
Dimax Spring Security Probleme Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot + Vaadin API Security Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Buchempfehlung Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 17
iman Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 13
S Spring Security deaktivieren Frameworks - Spring, Play, Blade, Vaadin & Co 10
S Spring Boot Security Frameworks - Spring, Play, Blade, Vaadin & Co 3
B Spring tools security mit JSP Frameworks - Spring, Play, Blade, Vaadin & Co 6
K Spring Security für Java SE Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Konfiguration von Spring Security für httpBasic Auth und jdbc Authentication. Frameworks - Spring, Play, Blade, Vaadin & Co 3
P Spring Security Token vs. Cookie Frameworks - Spring, Play, Blade, Vaadin & Co 0
I Security mit JBoss oder Spring oder... Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Security URLs erlauben Frameworks - Spring, Play, Blade, Vaadin & Co 0
K JSF 2.1 und Spring 3 Security Login mit RememberMe Frameworks - Spring, Play, Blade, Vaadin & Co 1
F.S.WhiTeY Spring Security Constrain: Allow connection from localhost always Frameworks - Spring, Play, Blade, Vaadin & Co 1
F Spring Security Beans Frameworks - Spring, Play, Blade, Vaadin & Co 7
E Fehlermeldung von Spring Security beim Einloggen Frameworks - Spring, Play, Blade, Vaadin & Co 1
B Security mit Spring oder Seam Frameworks - Spring, Play, Blade, Vaadin & Co 6
M Problem mit spring security Frameworks - Spring, Play, Blade, Vaadin & Co 0
C JSF 2.0 Spring Security 3 User eingeloggt? Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Webanwendung und Spring Security Ratschlag Frameworks - Spring, Play, Blade, Vaadin & Co 6
T JSF - Spring Security Integration Frameworks - Spring, Play, Blade, Vaadin & Co 0
G Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Security RMI Frameworks - Spring, Play, Blade, Vaadin & Co 2
I Spring Security: Login und danach Methode aufrufen. Nur wie?? Frameworks - Spring, Play, Blade, Vaadin & Co 0
G Spring Security Leerzeichen Frameworks - Spring, Play, Blade, Vaadin & Co 7
G Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 1
G Spring Security - Angemeldet bleiben Frameworks - Spring, Play, Blade, Vaadin & Co 4
G Spring Security Beispielprogramm [DRINGEND] Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Security 3 und JSF 2.0 Frameworks - Spring, Play, Blade, Vaadin & Co 5
G Spring Security Konfiguration Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Security Benutzer ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 3
P Spring Security mit Datenbank Frameworks - Spring, Play, Blade, Vaadin & Co 5
I Spring Security 404 Fehler bei Login -> Findet Seite nicht Frameworks - Spring, Play, Blade, Vaadin & Co 0
I Eigene Login Funktion bei Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
I Menüsteuerung mit Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 0
ARadauer Spring Security - Setting the SecurityContextHolder Contents Directly Frameworks - Spring, Play, Blade, Vaadin & Co 1
M JSF Navigation - Spring Security Logout Problem Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring Security Tutorial ohne Web application Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
8u3631984 Spring JPA Probleme beim SPeichern von Sets Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring JDBC Probleme beim Spaltennamen Frameworks - Spring, Play, Blade, Vaadin & Co 3
LimDul Spring-Batches in Docker über Rest starten/verfolgen Frameworks - Spring, Play, Blade, Vaadin & Co 0
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Eure Erfahrungen mit Primefaces und Spring - wer managed die Beans Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
L Spring Data und Rest Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Data und Rest Conroller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Amazon-SP-Api Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Aktualisiere Spring Controller Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Spring Data: Modellierung mit einer Embeddable bean Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Wann Spring Batch nutzen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
P Spring Hessian Remote Beispiel Frameworks - Spring, Play, Blade, Vaadin & Co 20
8u3631984 Spring 2.7.8 Info Enpoint nicht zuerreichen Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Spring UsernameNotFoundException(msg); auf der View msg ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Spring UsernameNotFoundException(Message) auf der View Message ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Cross-Origin beim Abrufen von Spring Endpoint Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
T Spring Resourcen Ordner ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring JPA und Repository Frameworks - Spring, Play, Blade, Vaadin & Co 12
D Mapstruct Dependency Injection funktioniert nicht mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 15
Avalon Wie sieht bei Euch das Deployment einer Spring Boot Anwendung aus? Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Threads in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 7
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Boot: Was bewirkt parent in maven genau? Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Vaadin+Spring Boot erster Seitenload nach Neustart endlos Frameworks - Spring, Play, Blade, Vaadin & Co 0
doncarlito87 Wie erhalte ich ein JSON aus eine NativeQuery (Spring Boot)? Frameworks - Spring, Play, Blade, Vaadin & Co 8
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon Erstellung Dockerimage mit spring-boot:build-image in Spring Boot mit Umgebungsvariablen Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Integration - Logging Frameworks - Spring, Play, Blade, Vaadin & Co 7

Ähnliche Java Themen

Neue Themen


Oben