Bonjour,

Je veux sécuriser mon application web avec JAAS sous JBoss 4.2
L'appli utilise Struts.

En utilisant une authentification par formulaire avec login/mdp (j_security_check etc ) le systeme de sécurité se met bien en place, je recupere mon Principal et mes roles avec request.getUserPrincipal et request.isUserInRole.

Cependant le systeme de login de l'application est plus compliqué qu'un simple login/mdp et je voudrai authentifier l'utilisateur dans une servlet. J'ai vu que JBoss propose la classe WebAuthentication qui doit faire ca très bien.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
WebAuthentication pwl = new WebAuthentication(); 
pwl.login(login, mdp);
le probleme c'est que la classe WebAuthentication ne trouve pas de request valide :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
Catch InvocationTargetException :  | 
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at  org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.IllegalStateException: request is null
	at org.jboss.web.tomcat.security.login.WebAuthentication.login(WebAuthentication.java:80)
	at com.staci.webcat3.action.AuthentificationAction.login(AuthentificationAction.java:98)
	... 31 more
en explorant un peu le code de WebAuthentication il récupère la request par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Request request = (Request)SecurityAssociationValve.activeRequest.get();
 
/*avec Request de type org.apache.catalina.connector.Request*/
Or dans la doc de JBoss, SecurityAssociationValve n'a pas de parametre activeRequest.

Donc si qlu a une idée du pourquoi Jboss me trouve pas de requete, je suis preneur

si vous avez besoin de plus d'info hésité pas a me demander.

Petite question subsidiaire : y a -t-il un moyen de recuperer l'objet org.apache.catalina.connector.Request à la place d'une FacadeRequest dans une servlet sous Struts ?