[Spring-Flex][ACEGI] Semble ne pas fonctionner
Bonjour à tous :),
Comme expliqué dans le titre de mon message, j'ai du mal à faire fonctionner Spring Security...
J'ai suivi des articles de James Ward et Jettro Coenradie mais il est possible que j'ai loupé quelque chose.
Ce que je ne comprend absolument pas c'est que j'ai testé ça sur un projet fake juste avant d'attaquer le "vrai" projet et ça semblait fonctionner. J'ai vérifié mes fichiers de config et ils sont point pour point identiques en ce qui concerne spring security.
Je vous donnes les passages croustillants :P
Dans mon web.xml :
Code:
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
| <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/applicationContext.xml</param-value>
</context-param>
...
<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>
...
<servlet>
<servlet-name>Spring MVC Servlet Dispatcher</servlet-name>
<display-name>Spring MVC Servlet Dispatcher</display-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/webApplicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> |
Dans mon applicationContext.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <security:global-method-security secured-annotations="enabled" jsr250-annotations="enabled" />
<security:http entry-point-ref="preAuthenticatedEntryPoint">
<security:anonymous enabled="false"/>
</security:http>
<bean id="preAuthenticatedEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="arnaud" password="arnaud" authorities="ROLE_USER"/>
</security:user-service>
</security:authentication-provider>
</security:authentication-manager> |
Et dans mon webApplicationContext.xml ceci :
Code:
1 2 3
| <flex:message-broker>
<flex:secured />
</flex:message-broker> |
Plus ça dans chacun de mes bean service :
Code:
1 2 3
| <security:intercept-methods>
<security:protect method="*" access="ROLE_USER" />
</security:intercept-methods> |
J'ai tout d'abord essayé de remplacer ce dernier bout de code par des annotations @Secured("ROLE_USER"), ce qui n'a pas fonctionné, c'est pour ça que j'ai mis en place les tags security:intercept-methods et security:protect dans mes beans.
C'est là que les problèmes arrivent... Dans mon premier projet fake, lorsque je lance mon application flex (un simple datagrid qui récupère une liste de produits), la sécurité fait son travail puisque la récupération échoue !
Dans mon second projet, le vrai donc, j'ai une erreur au déploiement dans tomcat, me disant que "*" n'est pas un nom valide de méthode.
J'ai essayé avec "findAll", qui est le nom de la méthode appelée, pareil, et j'ai remarqué qu'il me demandait le FQN.name...
Donc j'ai mis <security:protect method="com.blablabla.UserService.findAll" access="ROLE_USER" />
A ce moment là, plus d'erreur de déploiement, mais lorsque je lance l'appli flex, mes users sont chargés dans le datagrid :cry:
Soit j'ai le nez complètement dedans et je n'y vois plus rien, soir c'est une erreur fourbe, mais là je commence à devenir chèvre !
Help please ;)