IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Spring security et taglib


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 24
    Par défaut Spring security et taglib
    Bonjour,

    J'utilise spring security pour gérer l'authentification et l'autorisation dans mon application. L'authentification fonctionne, mais quand j'utilise des tags pour afficher les onglets de mon menu en fonction des rôles ça ne fonctionne pas
    De même lorsque je souhaite afficher le login de l'utilisateur connecté, je n'obtiens rien.

    Mais je n'ai aucune idée du pourquoi.

    Voici l'utilisation des tags:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>
     
    <security:authentication property="principal.username"/>
    <security:authorize ifAnyGranted="ROLE_ADMINISTRATOR">Mon onglet</security:authorize>
    et voici ma config de spring security:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    <?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:security="http://www.springframework.org/schema/security"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                               http://www.springframework.org/schema/security
                               http://www.springframework.org/schema/security/spring-security-2.0.xsd">
     
        <security:global-method-security secured-annotations="enabled"  />
     
        <security:http auto-config="false" access-denied-page="/accessDenied.jsp" access-decision-manager-ref="accessDecisionManager">
     
             <!-- Restrict URLs based on role --> 
            <security:intercept-url pattern="/accessDenied.jsp" filters="none" access="IS_AUTHENTICATED_ANONYMOUSLY" />
            <security:intercept-url pattern="/index.jsp" filters="none" access="IS_AUTHENTICATED_ANONYMOUSLY" />
            <security:intercept-url pattern="/css/**" filters="none" access="IS_AUTHENTICATED_ANONYMOUSLY" />
            <security:intercept-url pattern="/img/**" filters="none" access="IS_AUTHENTICATED_ANONYMOUSLY" />
            <security:intercept-url pattern="/agendaReadOnly/**"  access="IS_AUTHENTICATED_ANONYMOUSLY" />
            <security:intercept-url pattern="/intervention/**"  access="ROLE_NURSE, ROLE_DOCTOR" />
            <security:intercept-url pattern="/**" access="ROLE_ADMINISTRATOR, ROLE_REDACTOR, ROLE_NURSE, ROLE_DOCTOR"   />
     
             <!-- Override default login and logout pages --> 
     
            <security:form-login login-page="/index.jsp" 
                                 login-processing-url="/j_spring_security_check" 
                                 default-target-url="/home/index.jsp" 
                                 authentication-failure-url="/index.jsp?login_error=1"  />
     
            <security:logout logout-url="/logout" logout-success-url="/index.jsp" />
            <!-- 
            <security:remember-me user-service-ref="userDetailsService"/>
             -->
        </security:http>
     
         <security:authentication-provider user-service-ref="authenticationServiceTarget">
            <security:password-encoder hash="md5"></security:password-encoder>
        </security:authentication-provider>
     
        <bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager">
    		<property name="providers">
    			<list>
    				<ref local="daoAuthenticationProvider"/>
    			</list>
    		</property>
    	</bean>
     
     
    	<bean id="authenticationProcessingFilterEntryPoint" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
    		<property name="loginFormUrl" value="/index.jsp"/>
    		<property name="forceHttps" value="false"/>
    	</bean>
     
     
     
        <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
      		<property name="userDetailsService" ref="userDetailsService"/>
      		<!-- <property name="userCache" ref="userCache"/> -->
      		<!-- <property name="saltSource" ref bean="saltSource"/>  -->
      		<!-- <property name="passwordEncoder" ref="passwordEncoder"/> -->	
    	</bean>  
     
     
    	<bean id="userDetailsService" class="org.springframework.security.userdetails.jdbc.JdbcDaoImpl">
    		<property name="dataSource" ref="basicDataSource" />
    		<property name="authoritiesByUsernameQuery">
                <value>
                	SELECT login, password, active from user where login = ?
                </value>
            </property>
            <property name="usersByUsernameQuery">
    			<value>
    				SELECT u.login, r.label from user u, user_role r where u.id=r.id and u.login = ?
    			</value>
    		</property>
    	</bean>
     
     
     
        <bean id="accessDecisionManager" class="org.springframework.security.vote.AffirmativeBased">
    		<property name="allowIfAllAbstainDecisions" value="false"/>
    	 	<property name="decisionVoters">
    	        <list>
    	          <bean class="org.springframework.security.vote.RoleVoter"/>
    	         <bean class="org.springframework.security.vote.AuthenticatedVoter"/>
    	        </list>
    	     </property>
    	</bean>
     
        <bean id="roleVoter" class="org.springframework.security.vote.RoleVoter">
    		<property name="rolePrefix" value="ROLE_" />
    	</bean> 
     
     
    </beans>
    Merci de votre aide, car cela fait un petit moment que je bloque dessus...

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Quelle erreur as-tu ?

    Si tu es en JSP 1.1, il te faut ajouter security.tld dans WEB-INF/lib
    et ajouter dans le web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <taglib>
      <taglib-uri>http://www.springframework.org/security/tags</taglib-uri> 
      <taglib-location>/WEB-INF/security.tld</taglib-location>
    </taglib>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 24
    Par défaut
    C'est bien là le problème, je n'ai aucune erreur...
    Et je ne pense pas être en JSP 1.1, mais comment le vérifier?

    Merci.

  4. #4
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Ben ca dépend de la version de j2ee que utilises !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 24
    Par défaut
    J'utilise le JDK 1.6, donc je ne suis pas en JSP 1.1 je pense

  6. #6
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    JDK et j2ee n'ont rian à voir !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Par défaut
    Bonjour Soulant,

    -1-

    D'après moi la partie tags jsp est OK. J'ai pas analysé partie conf.

    -2-

    Voici un lien vers un tuto dont la dernière partie met en oeuvre taglibs spring security. Code du projet eclipse téléchargeable : http://www.objis.com/formation-java/spip.php?article82

    Douglas.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 24
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Donc pour répondre à willoi:
    Je n'ai pas de code html généré par les balises.
    Et voici mon web.xml:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="localhosto-privateweb" version="2.5"
             xmlns="http://java.sun.com/xml/ns/j2ee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     
        <display-name>Localhosto Private Web</display-name>
     
     
     
            <!-- filtre SessionInView -->
        <filter>
    		<filter-name>sessionInView</filter-name>
    		<filter-class>
    			org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    		</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>sessionInView</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
     
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
         
        <listener>
            <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
        </listener>
        
        <filter>
            <filter-name>Spring character encoding filter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>utf-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>Spring character encoding filter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    	<jsp-config>
            <jsp-property-group>
                <url-pattern>*.jsp</url-pattern>
                <page-encoding>UTF-8</page-encoding>
            </jsp-property-group>
        </jsp-config>
     
        <session-config>
            <session-timeout>15</session-timeout>
        </session-config>
     
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
     
    	<!-- Stripes Filter -->
    	<filter> 
    		<filter-name>StripesFilter</filter-name> 
    		<filter-class> 
    			net.sourceforge.stripes.controller.StripesFilter 
    		</filter-class> 
    		<init-param> 
     			<param-name>ActionResolver.Packages</param-name> 
    			<param-value>org.insia.localhosto.privateweb.action</param-value> 
    		</init-param> 
    		<init-param>
    			<param-name>Extension.Packages</param-name>
    			<param-value>org.insia.localhosto.privateweb.stripes.ext</param-value>
    		</init-param>
     
    		<init-param>
                <param-name>ActionBeanContext.Class</param-name>
                <param-value>org.insia.localhosto.privateweb.action.PrivateWebActionBeanContext</param-value>
            </init-param>
            <init-param>
                <param-name>ExceptionHandler.Class</param-name>
                <param-value>org.insia.localhosto.privateweb.action.PrivateWebExceptionHandler</param-value>
            </init-param>
           <!-- Spring interceptor -->
            <init-param>
    		    <param-name>Interceptor.Classes</param-name>
    		    <param-value>
    		        net.sourceforge.stripes.integration.spring.SpringInterceptor,
    		        net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor
    		    </param-value>
    		</init-param>
    	</filter> 
    	<servlet> 
    		<servlet-name>DispatcherServlet</servlet-name> 
    		<servlet-class> 
    			net.sourceforge.stripes.controller.DispatcherServlet 
    		</servlet-class> 
    		<load-on-startup>1</load-on-startup> 
    	</servlet>
    	<filter-mapping>
            <filter-name>StripesFilter</filter-name>
            <url-pattern>*.jsp</url-pattern>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
        </filter-mapping>
    	<filter-mapping> 
    		<filter-name>StripesFilter</filter-name> 
    		<servlet-name>DispatcherServlet</servlet-name> 
    		<dispatcher>REQUEST</dispatcher> 
    		<dispatcher>FORWARD</dispatcher> 
    	</filter-mapping> 
     
    	<!-- Dynamic Mapping Filter -->
    	<filter>
    		<filter-name>DynamicMappingFilter</filter-name>
    		<filter-class>
    		  net.sourceforge.stripes.controller.DynamicMappingFilter
    		</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>DynamicMappingFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    		<dispatcher>REQUEST</dispatcher>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>INCLUDE</dispatcher>
    	</filter-mapping>
     
     
    	<!-- 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>
     
    	<!-- Spring -->
    	<context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext*.xml</param-value>
        </context-param>
     
    </web-app>


    Ensuite pour répondre à douglasmbiandou:

    Donc merci pour le tuto... mais sans grande surprise cela a fonctionné parfaitement.

    Donc j'ai modifier le web.xml et le fichier de Spring afin d'ajouter ma conf petit à petit mais au final pas de soucis... donc je ne pense pas que cela vienne de ma conf.

    Après j'ai fait le test inverse:
    j'ai ajouter le code suivant dans mon index.jsp (avec les import qui vont bien):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%
    if(SecurityContextHolder.getContext() == null){
    	System.out.println("SecurityContextHolder is null");
    }else{
    	System.out.println("SecurityContextHolder not null");
    }
     
    if(SecurityContextHolder.getContext().getAuthentication() == null){
    	System.out.println("Authentication is null");
    }else{
    	System.out.println("Authentication not null");
    }%>
    et là dans ma console, j'ai le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SecurityContextHolder not null
    Authentication is null
    Mais je ne vois pas pourquoi mon authentication est null... puisque cela fonctionne dans le tuto...

    Je continue à chercher mais si vous avez une idée, n'hésitez pas

    Merci à tous encore.

  9. #9
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Mais est-ce que tu realises l'authentification à un moment donné ?
    Via une page de login-password ou ldap ou autre ..

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 24
    Par défaut
    Oui je m'authentifie via un formulaire et des users dans ma base de donnée.
    La config du formulaire se trouve dans mon premier post.

    Et cette partie fonctionne puisque le filtre par URL fonctionne bien...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 24
    Par défaut
    Bon je pense avoir trouvé le fautif: Stripes

    En effet, en me basant sur le tuto fournit plus haut, lorsque j'appelle index.jsp après l'authentification tout fonctionne bien (login + lien adequat), par contre si je passe par mon /home/index qui est intercepté par Stripes et qui fait une simple redirection vers index.jsp alors là plus d'information ni login et plus aucun lien...

    Donc faut il ajouter quelque chose dans le web.xml afin d'utiliser Stripes avec Spring security?

    Merci.

Discussions similaires

  1. [Security] Problème Spring Security Taglib
    Par exmortice dans le forum Spring
    Réponses: 1
    Dernier message: 28/01/2013, 21h13
  2. [Spring Security] question concernant un filtre d'ACEGI
    Par flamant dans le forum Spring Web
    Réponses: 2
    Dernier message: 22/10/2008, 07h37
  3. [Security] Spring security VS JAAS
    Par Sniper37 dans le forum Spring
    Réponses: 2
    Dernier message: 21/08/2008, 16h54
  4. [Spring Security] Authentification par groupe LDAP
    Par titeuf92 dans le forum Spring Web
    Réponses: 2
    Dernier message: 25/06/2008, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo