Spring Security Beans

freez

Top Contributor
Hallo Community,

ich habe eine Testapplikation mit Spring 3 / JSF2 erstellt (funktioniert alles) und wollte diese mit Spring Security absichern. Ich habe mir das Tut von Spring Source angesehen und meinen Bedürfnissen angepasst. Allerdings ist da in dem Beispiel kein Zugriff auf Managed Beans gezeigt, was ich allerdings in meiner Testapp habe.

Sobald ich Spring Security aktiviere (web.xml) ist kein Zugriff auf die Managed Beans mehr möglich:
Code:
05.09.2012 21:12:19 com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SCHWERWIEGEND: Error Rendering View[/kunden/auftrag.xhtml]
javax.el.PropertyNotFoundException: /kunden/auftrag.xhtml @126,99 value="#{auftragBean.auftrag.nr}": Target Unreachable, identifier 'auftragBean' resolved to null
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
	at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:100)
	at org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:67)
...

Muss ich die Beans irgendwie noch angeben, oder habe ich hier einen Denkfehler?

web.xml (Auszug)
[XML]
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/applicationContext-security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

<!-- Spring Security -->
<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>
[/XML]


applicationContext-security.xml:
[XML]
<?xml version="1.0" encoding="UTF-8"?>

<!--
- Sample namespace-based configuration
-
-->

<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
Index of /schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">

<debug />

<!--<global-method-security pre-post-annotations="enabled" />-->

<http pattern="/static/**" security="none"/>
<http pattern="/loggedout.jsp" security="none"/>

<http use-expressions="true">
<intercept-url pattern="/kunden/**" access="hasRole('supervisor')"/>
<!--
Allow all other requests. In a real application you should
adopt a whitelisting approach where access is not allowed by default
-->
<intercept-url pattern="/**" access="permitAll" />
<form-login />
<logout logout-success-url="/loggedout.jsp" delete-cookies="JSESSIONID"/>
<remember-me />
<!--
Uncomment to enable X509 client authentication support
<x509 />
-->
<!-- Uncomment to limit the number of sessions a user can have
<session-management invalid-session-url="/test.html">
<concurrency-control max-sessions="2" error-if-maximum-exceeded="true" />
</session-management>
-->
</http>

<!--
Usernames/Passwords are
rod/koala
dianne/emu
scott/wombat
peter/opal
-->
<beans:bean id="encoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder"/>

<authentication-manager>
<authentication-provider>
<password-encoder ref="encoder"/>
<user-service>
<user name="rod" password="4efe081594ce25ee4efd9f7067f7f678a347bccf2de201f3adf2a3eb544850b465b4e51cdc3fcdde" authorities="supervisor, user, teller" />
<user name="dianne" password="957ea522524a41cbfb649a3e293d56268f840fd5b661b499b07858bc020d6d223f912e3ab303b00f" authorities="user,teller" />
<user name="scott" password="fb1f9e48058d30dc21c35ab4cf895e2a80f2f03fac549b51be637196dfb6b2b7276a89c65e38b7a1" authorities="user" />
<user name="peter" password="e175750688deee19d7179d444bfaf92129f4eea8b4503d83eb8f92a7dd9cda5fbae73638c913e420" authorities="user" />
</user-service>
</authentication-provider>
</authentication-manager>

</beans:beans>
[/XML]

root-context.xml:
[XML]<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
Index of /schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
Index of /schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd">

<!-- Root Context: defines shared resources visible to all other web components -->
<context:annotation-config />
<context:component-scan base-package="org.test"/>
<task:scheduler id="taskScheduler" />
<task:executor id="taskExecutor" pool-size="10"/>
<task:annotation-driven executor="taskExecutor" scheduler="taskScheduler"/>
</beans>
[/XML]

Java:
import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.faces.event.ActionEvent;
import javax.inject.Named;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;

@Named("auftragBean")
@Scope("session")
public class AuftragBean implements Serializable {

	private static final long serialVersionUID = 5451044444775095552L;
	private static Logger log = Logger.getLogger(AuftragBean.class);
	Auftrag auftrag;	
	
	
	@PostConstruct
	public void init(){
		log.info("INIT");
		createEmptyAuftrag();
	}


	private void createEmptyAuftrag(){
		auftrag = new Auftrag();
		auftrag.setNr("A66488");
	}

	public Auftrag getAuftrag() {
	
		return auftrag;
	}

	public void setAuftrag(Auftrag auftrag) {
	
		this.auftrag = auftrag;
	}	
}
 

freez

Top Contributor
Achso, noch ein Hinweis dazu: die Aktivierung von Spring Security erlaubt mir schon meine JSF Seiten abzusichern. Ich habe eine Testseite ohne Zugriff auf Managed Bean und bei der muss ich mich erst anmelden und nach erfolgreicher Anmeldung sehe ich auch die gesicherte Seite. Nur beim Zugriff auf Managed Beans habe ich Probleme.
 

freez

Top Contributor
Ooohhh, ...


... kann es sein, das Spring zwar schon mit [c]@Named[/c] arbeiten kann, aber Spring Security da Probleme macht. Ich habe mal [c]@ManagedBean[/c] versucht, was spontan geklappt hat, aber [c]@AutoWired[/c] funktioniert nicht mehr. Wenn ich auf [c]@Component[/c] umstelle geht das nun auch.

Handle ich mir andere Probleme ein, wenn ich [c]@Component[/c] verwende (benutze JSF2 / PrimeFaces / Spring 3)
 

F.S.WhiTeY

Bekanntes Mitglied
Moin,

also Spring sollte eigentlich mit @Named klar kommen, warum das bei dir gerade probleme macht weis ich nicht.

Was die @Component-Annotation angeht: Wenn du es lediglich für Spring benutzt macht es natürlich keine Probleme. Ist ja eine von Spring mitgelieferte Annotation. JSF bzw. CDI sollte diese Annotation/en ignorieren. Also IMHO: Nein keine Probleme.

Ich bin ja ein Verfechter von CDI/EJB im Hintergrund und "normalen" ManagedBeans als Backing Beans hinter den Views. Das ist aber eine andere Diskussion die ich hier die letzten Tage schon ausreichend hatte ;)
Ein Grund warum ich Fan davon bin sind genau die Probleme die du nun hast.

Nichts desto trotz werde ich mir dein Problem mal genauer anschauen, da mir der Konflickt mit CDI komisch vorkommt.

Ich melde mich wenn ich was rausgefunden habe.

LG

David
 

F.S.WhiTeY

Bekanntes Mitglied
So schnell kann es gehen:

Badr ELHOUARI Bolg: Spring3 and JSF2 integration using CDI annotations

In general the big difference i have found is that Spring and JSF bean from Java EE 6 use a different scoping! Spring do not support standard scope annotation used in JSF and CDI. To get it work i have followed a workaround to import JSF/CDI bean into Spring:

Es ist also denkbar, das es ganz einfach an deinem Scope liegt. Du mischt ja gerade drei Frameworks. Also mischt du ja gerade auch mehrere Annotationen. @Named sollte CDI sein, @Component ist Spring und @scope("scope") ist ja nun auch Spring. Was ist es denn nun ? Eine JSF, CDI oder Spring Bean ? :)

Ich denke das da einfach der Hase im Pfeffer liegt. Warum die JSF-ManagedBean da nun keine Probleme macht ist für mich allerdings auch fragwürdig :D

Ich fasse meine Vermutung also noch mal zusammen: CDI und JSF sollten @Component ignorieren, Spring kennt aber @Named nicht und somit muss man auch den CDI-Scope und Context nutzen um es mit Spring zu mischen.

Lies dir den Artikel durch oder geh gleich zu dem Workaround:

Using CDI Scopes with Spring 3 Matthias Wessendorf's Weblog
 

F.S.WhiTeY

Bekanntes Mitglied
Moin,

nochmal ein nachtrag, nachdem ich mir das zusammengereimt habe:

Die normale JSF-ManagedBean wird funktionieren weil sie die Spring Annotationen ignoriert und der default scope auch ohne Angaben einer Annotation
Code:
RequestScoped
ist.
 
Zuletzt bearbeitet:

freez

Top Contributor
Danke für deine Antworten. An den Scope habe ich jetzt gar nicht gedacht. Allerdings habe ich meines Erachtens schon darauf geachtet, dass ich die richtigen Scopes zur Bean Annotation genutzt habe. Allerdings bin ich mir da jetzt ziemlich unsicher und ich werde heute Abend mal nachschauen.
 

freez

Top Contributor
OK, kann sein, dass ich die Scopes vertauscht hatte. Konnte es jetzt nicht mehr richtig nachvollziehen. Da ich ausschliesslich mit Spring arbeite ist [c]@Component[/c] genau das Richtige für mich.

Danke für die Hilfe.
 
Ä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
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
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