Spring Security 3 und JSF 2.0

Dimarzio

Mitglied
Hallo zusammen,

ich stehe im Moment vor einem Problem. Irgendwie bekomme ich schon seit Tagen nicht hin JSF 2.0 und Spring Security 3 zu verheiraten...

Könnte mir jemand evtl. ein aktuelles Tutorial empfeheln bzw. eigenes Beispiel zeigen?

Das einzige was ich brauche ist lediglich eine Benutzerauthentifizierung. Login/Passwort. Das wird dann im security-context gepflegt. Irgendwie ist mir einfach nicht klar, was ich alles dafür brauche.

AppServer muss/kann glassfish sein und bei JSF ist es die mojarra implementierung.

Alternativ würde ich mich auch über ähnliches mit Apache Shiro freuen :)

Für jeden Tipp wäre ich sehr dankbar!
 

pherin

Mitglied
Könntest du etwas genauer erklären, was genau nicht funktioniert?

Anbei Teile meiner Security-Konfiguration. In meinem Fall verwende ich einen UserDetailsManager, der die Benutzerdaten per Hibernate aus der Datenbank holt.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
	xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">

	<authentication-manager alias="authenticationManager">
		<authentication-provider user-service-ref="userDetailsManager">
				<password-encoder hash="md5" />
		</authentication-provider>
	</authentication-manager>
	<beans:bean id="userDetailsManager" class="x.y.z.UserDetailsManager" />
 	
 	<beans:bean id="accessDeniedHandler" class="org.springframework.security.web.access.AccessDeniedHandlerImpl">
 		<beans:property name="errorPage" value="/accessDenied.xhtml"/>
 	</beans:bean>
 	
	<http use-expressions="true" >
		<http-basic />
		<logout />
		<access-denied-handler ref="accessDeniedHandler"/>

		<form-login login-page="/spring/admin/login.xhtml" default-target-url="/spring/admin/index.xhtml" />

		<session-management invalid-session-url="/spring/admin/login.xhtml">
			<concurrency-control max-sessions="1" expired-url="/" error-if-maximum-exceeded="true" />
		</session-management>
		
		<intercept-url pattern="/**" access="permitAll" />
		<intercept-url pattern="/spring/public/**" access="permitAll"/>
		
		<intercept-url pattern="/spring/admin/login.xhtml" access="permitAll" />
		<intercept-url pattern="/spring/admin/**" access="hasAnyRole('ROLE_STAFF', 'ROLE_ADMIN')" />
	</http>
</beans:beans>

Die Login-Seite habe ich, nachdem ich einige Probleme mit dem Logout hatte, wenn ich mich über eine JSF-action-methode angemeldet habe, auf ein standard-html formular umgebaut. Eingebettet ist das in einer xhtml-Datei.

"login.xhtml"
Code:
<form action="#{request.contextPath}/j_spring_security_check" method="post">
	Benutzername: <input type="text" name="j_username" /><br/>
	Passwort: <input type="password" name="j_password" /><br/>
	<input type="submit" value="Anmelden" />
</form>

Wenn dein Login erfolgreich war, wirst du auf die default-target-url umgeleitet ("/spring/admin/index.xhtml").


Für einen Logout musst du dann nur einen Link wie folgt setzen:
Code:
Entweder:
<a href="#{request.contextPath}/j_spring_security_logout">Abmelden</a>
Oder:
<h:outputLink value="#{request.contextPath}/j_spring_security_logout}">Abmelden</h:outputLink>


Du kannst jedoch auch eine Methode in einer ManagedBean definieren, die den Login erledigt. Wie bereits erwähnt hatte ich dabei aber einige Probleme.
Java:
public String login(AuthenticationManager authenticationManager) {
	try {
		logger.info("Trying to log in: " + m_username);
		if (m_username == null || m_password == null) {
			FacesMessage facesMsg = new FacesMessage(
			FacesMessage.SEVERITY_ERROR, "Error", messageDAO.getMessage("login.failed") );
			FacesContext.getCurrentInstance().addMessage(null, facesMsg);
			return "error";
		}
		Authentication request = new UsernamePasswordAuthenticationToken(
					m_username, m_password);			
			
		Authentication result = authenticationManager.authenticate(request);
		SecurityContextHolder.getContext().setAuthentication(result);

	} catch (AuthenticationException e) {

		FacesMessage facesMsg = new FacesMessage(
			FacesMessage.SEVERITY_ERROR, "Error", messageDAO.getMessage("login.failed") );
		FacesContext.getCurrentInstance().addMessage(null, facesMsg);
			
		return "error";
	}
	return "success";
}

m_username und m_password sind dabei die properties, die du auf deiner JSF-Seite für die <h:inputText> Felder verwendest.
 
Zuletzt bearbeitet:

Kian

Aktives Mitglied
Du kannst jedoch auch eine Methode in einer ManagedBean definieren, die den Login erledigt. Wie bereits erwähnt hatte ich dabei aber einige Probleme.
Java:
public String login(AuthenticationManager authenticationManager) {
	try {
		logger.info("Trying to log in: " + m_username);
		if (m_username == null || m_password == null) {
			FacesMessage facesMsg = new FacesMessage(
			FacesMessage.SEVERITY_ERROR, "Error", messageDAO.getMessage("login.failed") );
			FacesContext.getCurrentInstance().addMessage(null, facesMsg);
			return "error";
		}
		Authentication request = new UsernamePasswordAuthenticationToken(
					m_username, m_password);			
			
		Authentication result = authenticationManager.authenticate(request);
		SecurityContextHolder.getContext().setAuthentication(result);

	} catch (AuthenticationException e) {

		FacesMessage facesMsg = new FacesMessage(
			FacesMessage.SEVERITY_ERROR, "Error", messageDAO.getMessage("login.failed") );
		FacesContext.getCurrentInstance().addMessage(null, facesMsg);
			
		return "error";
	}
	return "success";
}

m_username und m_password sind dabei die properties, die du auf deiner JSF-Seite für die <h:inputText> Felder verwendest.

Hallo,
wie macht man das mit einem persistent Token Remember-Me?
Danke.
 
Ä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
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
MQue Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 12
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