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.
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 WebAuthentication pwl = new WebAuthentication(); pwl.login(login, mdp);
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
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
Or dans la doc de JBoss, SecurityAssociationValve n'a pas de parametre activeRequest.
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*/
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 ?
Partager