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 configuration [Security]


Sujet :

Spring Java

  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 47
    Par défaut Spring Security configuration
    salut ,
    je travaille avec Spring security , et je trouve beaucoup de probleme

    j`ai construit la page jsp : Authentification.jsp comme ca :
    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
     
    <%@ taglib prefix='c' uri='http://java.sun.com/jstl/core_rt' %>
    <%@ page import="org.springframework.security.ui.AbstractProcessingFilter" %>
    <%@ page import="org.springframework.security.ui.webapp.AuthenticationProcessingFilter" %>
    <%@ page import="org.springframework.security.AuthenticationException" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Autehentification</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     
    <body>
     
      <c:if test="${not empty param.login_error}">
    	      <font color="red">
    	        Your login attempt was not successful, try again.<br/><br/>
    	        Reason: <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}"/>.
    	      </font>
    	    </c:if>
     
     
        <form name="f" action="<c:url value='j_spring_security_check'/>" method="post">
    	<table width="350px" align="center" style="border: 1px solid #000000; background-color: #efefef;">
    	<tr>
    		<td colspan=2></td>
    	</tr>
    	<tr>
    		<td colspan=2>&nbsp;</td>
    	</tr>
    	Please identify yourself with a username and password:
    	<tr> </tr>
    	<br> </br>
    	        <tr><td>User or mail:</td><td><input type='text' name='j_username' value='<c:if test="${not empty param.login_error}"><c:out value="${SPRING_SECURITY_LAST_USERNAME}"/></c:if>'/></td></tr>
    	        <tr><td>Password:</td><td><input type='password' name='j_password'></td></tr>
    	        <tr><td><input type="checkbox" name="_spring_security_remember_me"></td><td>Don't ask for my password for two weeks</td></tr>
     
    	   	<tr>
    		<td></td>
    		<td><input type="submit" name="Submit" value="Login"> <input name="reset" type="reset" value="Reset"></td>
     
    	</tr>
    	<tr>
    		<td colspan=2>&nbsp;</td>
    	</tr>
    	      </table>
    	    </form>
     
    </body>
    </html>
    et j`ai configuré le springseurity comme ca
    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
     
    <?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:util="http://www.springframework.org/schema/util"
    	xmlns:security="http://www.springframework.org/schema/security"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
                               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                               http://www.springframework.org/schema/util 
                               http://www.springframework.org/schema/util/spring-util-3.0.xsd
                               http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd">
    <bean id="dataSource"
    		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
    		<property name="url" value="jdbc:mysql://localhost:3306/proxym_data_base" />
    		<property name="username" value="root" />
    		<property name="password" value="" />
    	</bean>
     
    <security:http>
    		<security:form-login login-page="/Authentification.htm" authentication-failure-url="/accessDenied.htm?login_error=true" />
    		<security:intercept-url pattern="/acceuil.htm"  access="ROLE_ADMIN"/>
    		<security:intercept-url pattern="/acceuil.htm" access="ROLE_ADMIN"/>
    		<security:intercept-url pattern="/acceuil.htm" access="IS_AUTHENTICATED_FULLY" />
    		<security:logout/>	
     
    </security:http>
     
    	<security:authentication-provider>
    		<security:password-encoder hash="md5" >
    			<security:salt-source system-wide="MySalt"/>
    		</security:password-encoder>
     
    		<security:jdbc-user-service data-source-ref="dataSource" authorities-by-username-query="select firstame,password from employees where firstame =?"/>
    	</security:authentication-provider>
     
    	<security:global-method-security secured-annotations="enabled">
    		<security:protect-pointcut
    			expression="execution(* com.springsource..*Service.*(..))"
    			access="ROLE_USER" />
    	</security:global-method-security>
     
    </beans>
    et pour le 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>GRH_LIGHT_Proxymit</display-name>
     
      <!--
    		- Filtre springSecurityFilterChain
    	-->
     
    	<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>
     
    	<!--
    		- ContextLoaderListener : chargement fichiers de définition de beans
    	-->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
     
    	<!--
    		- Fichiers XML de configuration, à charger par le ContextLoaderListener
    	-->
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>
    			/WEB-INF/security-applicationContext.xml,
    			/WEB-INF/dispatcher-servlet.xml
    		</param-value>
    	</context-param>
     
      <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>*.htm</url-pattern>
        </servlet-mapping>
        <welcome-file-list>
            <welcome-file>redirect.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
    le problème :
    - si je lance mon programme il faut que je vois la page d`authentification et ce n`est pas le cas ?? donc je la lance moi même pour vérifier
    -la requete sql que j`ai ecrit dans le springsecurity.xml ne marche pas pourtant j`ai fait un bean pour le data source comme deja mentionné et toujours il m`affiche un message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Your login attempt was not successful, try again.
     
    Reason: PreparedStatementCallback; bad SQL grammar [SELECT username,password,enabled FROM users WHERE username = ?]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: La table 'proxym_data_base.users' n'existe pas; nested exception is org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT username,password,enabled FROM users WHERE username = ?]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: La table 'proxym_data_base.users' n'existe pas
    et j`ai pas une table users et je ne sais pas d`ou elle arrive parsque je n`est pas mentionné cette base dans ma requête ??

    qlq 1 peut m`aider

  2. #2
    Membre averti
    Homme Profil pro
    Développeur blockchain
    Inscrit en
    Avril 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur blockchain
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2003
    Messages : 20
    Par défaut
    Quel est le schéma SQl de ta base ? Des tables impactées ?

    Citation Envoyé par zaidoune Voir le message
    salut ,
    je travaille avec Spring security , et je trouve beaucoup de probleme

    j`ai construit la page jsp : Authentification.jsp comme ca :
    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
     
    <%@ taglib prefix='c' uri='http://java.sun.com/jstl/core_rt' %>
    <%@ page import="org.springframework.security.ui.AbstractProcessingFilter" %>
    <%@ page import="org.springframework.security.ui.webapp.AuthenticationProcessingFilter" %>
    <%@ page import="org.springframework.security.AuthenticationException" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Autehentification</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     
    <body>
     
      <c:if test="${not empty param.login_error}">
    	      <font color="red">
    	        Your login attempt was not successful, try again.<br/><br/>
    	        Reason: <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}"/>.
    	      </font>
    	    </c:if>
     
     
        <form name="f" action="<c:url value='j_spring_security_check'/>" method="post">
    	<table width="350px" align="center" style="border: 1px solid #000000; background-color: #efefef;">
    	<tr>
    		<td colspan=2></td>
    	</tr>
    	<tr>
    		<td colspan=2>&nbsp;</td>
    	</tr>
    	Please identify yourself with a username and password:
    	<tr> </tr>
    	<br> </br>
    	        <tr><td>User or mail:</td><td><input type='text' name='j_username' value='<c:if test="${not empty param.login_error}"><c:out value="${SPRING_SECURITY_LAST_USERNAME}"/></c:if>'/></td></tr>
    	        <tr><td>Password:</td><td><input type='password' name='j_password'></td></tr>
    	        <tr><td><input type="checkbox" name="_spring_security_remember_me"></td><td>Don't ask for my password for two weeks</td></tr>
     
    	   	<tr>
    		<td></td>
    		<td><input type="submit" name="Submit" value="Login"> <input name="reset" type="reset" value="Reset"></td>
     
    	</tr>
    	<tr>
    		<td colspan=2>&nbsp;</td>
    	</tr>
    	      </table>
    	    </form>
     
    </body>
    </html>
    et j`ai configuré le springseurity comme ca
    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
     
    <?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:util="http://www.springframework.org/schema/util"
    	xmlns:security="http://www.springframework.org/schema/security"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
                               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                               http://www.springframework.org/schema/util 
                               http://www.springframework.org/schema/util/spring-util-3.0.xsd
                               http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd">
    <bean id="dataSource"
    		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
    		<property name="url" value="jdbc:mysql://localhost:3306/proxym_data_base" />
    		<property name="username" value="root" />
    		<property name="password" value="" />
    	</bean>
     
    <security:http>
    		<security:form-login login-page="/Authentification.htm" authentication-failure-url="/accessDenied.htm?login_error=true" />
    		<security:intercept-url pattern="/acceuil.htm"  access="ROLE_ADMIN"/>
    		<security:intercept-url pattern="/acceuil.htm" access="ROLE_ADMIN"/>
    		<security:intercept-url pattern="/acceuil.htm" access="IS_AUTHENTICATED_FULLY" />
    		<security:logout/>	
     
    </security:http>
     
    	<security:authentication-provider>
    		<security:password-encoder hash="md5" >
    			<security:salt-source system-wide="MySalt"/>
    		</security:password-encoder>
     
    		<security:jdbc-user-service data-source-ref="dataSource" authorities-by-username-query="select firstame,password from employees where firstame =?"/>
    	</security:authentication-provider>
     
    	<security:global-method-security secured-annotations="enabled">
    		<security:protect-pointcut
    			expression="execution(* com.springsource..*Service.*(..))"
    			access="ROLE_USER" />
    	</security:global-method-security>
     
    </beans>
    et pour le 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>GRH_LIGHT_Proxymit</display-name>
     
      <!--
    		- Filtre springSecurityFilterChain
    	-->
     
    	<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>
     
    	<!--
    		- ContextLoaderListener : chargement fichiers de définition de beans
    	-->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
     
    	<!--
    		- Fichiers XML de configuration, à charger par le ContextLoaderListener
    	-->
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>
    			/WEB-INF/security-applicationContext.xml,
    			/WEB-INF/dispatcher-servlet.xml
    		</param-value>
    	</context-param>
     
      <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>*.htm</url-pattern>
        </servlet-mapping>
        <welcome-file-list>
            <welcome-file>redirect.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
    le problème :
    - si je lance mon programme il faut que je vois la page d`authentification et ce n`est pas le cas ?? donc je la lance moi même pour vérifier
    -la requete sql que j`ai ecrit dans le springsecurity.xml ne marche pas pourtant j`ai fait un bean pour le data source comme deja mentionné et toujours il m`affiche un message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Your login attempt was not successful, try again.
     
    Reason: PreparedStatementCallback; bad SQL grammar [SELECT username,password,enabled FROM users WHERE username = ?]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: La table 'proxym_data_base.users' n'existe pas; nested exception is org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT username,password,enabled FROM users WHERE username = ?]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: La table 'proxym_data_base.users' n'existe pas
    et j`ai pas une table users et je ne sais pas d`ou elle arrive parsque je n`est pas mentionné cette base dans ma requête ??

    qlq 1 peut m`aider

  3. #3
    Membre averti
    Homme Profil pro
    Développeur blockchain
    Inscrit en
    Avril 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur blockchain
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2003
    Messages : 20
    Par défaut
    1/ Par l'attribut authorities-by-username-query, ta requete doit fournir le username et l'authority (ROLE_ADMIN, ...) !
    2/ Il te faut utiliser l'attribut users-by-username-query, et ta requete doit fournir le username, le password, et le enabled (boolean).

    Exemple :
    Schéma sql de ma base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    drop table MYUSERS if exists;
    create table MYUSERS (ID integer identity primary key, 
    					  username varchar(9), 
    					  password varchar(50),
    					  enabled boolean,
    					  authority varchar(50),
    					  unique(username));
     
    insert into MYUSERS (username, password, enabled, authority) 
    values ('keith', '02f3562616cd3a202ea7ed75ecfb852e', true, 'ROLE_MEMBER');
     
    insert into MYUSERS (username, password, enabled, authority) 
    values ('admin', '5a693853b2958ecb256db46b808ac488', true, 'ROLE_ADMIN');
    Extrait de ma config security :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <security:jdbc-user-service data-source-ref="dataSource"
    authorities-by-username-query="select username, authority from MYUSERS where username =?"
    users-by-username-query="select username, password, enabled from MYUSERS where username =?"/>
    Citation Envoyé par zaidoune Voir le message
    salut , voici ma base de données (P.J)

  4. #4
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 47
    Par défaut
    Merci pour votre réponse mais est il nécessaire de respecter les noms des champs de la table (username, password,enabled )?? parce que comme tu vois dans ma base (P.J) j`ai pas les mêmes champs ??? et est ce que ma requête est fausse ?? en plus faut il toujours écrire une requête pour le rôle et une autre pour le user ??? SVP si vous avez une réponse ou un exemple bien formulé prière de me l`envoyé et merci .


    Citation Envoyé par chrc Voir le message
    1/ Par l'attribut authorities-by-username-query, ta requete doit fournir le username et l'authority (ROLE_ADMIN, ...) !
    2/ Il te faut utiliser l'attribut users-by-username-query, et ta requete doit fournir le username, le password, et le enabled (boolean).

    Exemple :
    Schéma sql de ma base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    drop table MYUSERS if exists;
    create table MYUSERS (ID integer identity primary key, 
    					  username varchar(9), 
    					  password varchar(50),
    					  enabled boolean,
    					  authority varchar(50),
    					  unique(username));
     
    insert into MYUSERS (username, password, enabled, authority) 
    values ('keith', '02f3562616cd3a202ea7ed75ecfb852e', true, 'ROLE_MEMBER');
     
    insert into MYUSERS (username, password, enabled, authority) 
    values ('admin', '5a693853b2958ecb256db46b808ac488', true, 'ROLE_ADMIN');
    Extrait de ma config security :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <security:jdbc-user-service data-source-ref="dataSource"
    authorities-by-username-query="select username, authority from MYUSERS where username =?"
    users-by-username-query="select username, password, enabled from MYUSERS where username =?"/>

  5. #5
    Membre averti
    Homme Profil pro
    Développeur blockchain
    Inscrit en
    Avril 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur blockchain
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2003
    Messages : 20
    Par défaut
    Regarde sur le site SpringSource :
    http://static.springsource.org/sprin...default-schema
    http://static.springsource.org/sprin...ix-schema.html

    Tu peux essayer de remplacer le noms des champs par les tiens, mais en respectant l'ordre...

    Cependant :
    ... If you have a complex schema or would like a custom UserDetails implementation returned, you'd be better off writing your own UserDetailsService...

    Citation Envoyé par zaidoune Voir le message
    Merci pour votre réponse mais est il nécessaire de respecter les noms des champs de la table (username, password,enabled )?? parce que comme tu vois dans ma base (P.J) j`ai pas les mêmes champs ??? et est ce que ma requête est fausse ?? en plus faut il toujours écrire une requête pour le rôle et une autre pour le user ??? SVP si vous avez une réponse ou un exemple bien formulé prière de me l`envoyé et merci .

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Par défaut
    Si tu veux personnaliser ta base de données tu peux aussi redéfinir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    loadUserByUsername(String username)
    de l'interface http://static.springsource.org/sprin...lsService.html

  7. #7
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 47
    Par défaut
    Merci Bien pour votre aide , mais j`ai respecté la nomenclature des champs (username , authority ) . J`ai mis ces champs dans une seule table et tout ca fonctionne , et dans deuxième cas j`ai adapté deux tables comme l`indique (P.J) mais j`arrive pas a se connecter :
    voici comment j`ai écris mes requêtes selon ma base de données ( lorsque j`exécute ces requêtes dehors le spring security ca fonctionne )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <security:authentication-provider>
    		<security:password-encoder hash="md5" >
    			<security:salt-source system-wide="MySalt"/>
    		</security:password-encoder>
     
    		<security:jdbc-user-service data-source-ref="dataSource"
    authorities-by-username-query="select authority from rules where idrules =(select rules_idrules from employees_rules where employees_idemployees=(select idemployees from  employees where username =?))"
    users-by-username-query="select username, password, enabled from employees where username =?"/>
    	</security:authentication-provider>
    toujours j`arrive pas a se connecter

    puovez vous m`aidez ??

    Citation Envoyé par chrc Voir le message
    Regarde sur le site SpringSource :
    http://static.springsource.org/sprin...default-schema
    http://static.springsource.org/sprin...ix-schema.html

    Tu peux essayer de remplacer le noms des champs par les tiens, mais en respectant l'ordre...

    Cependant :

  8. #8
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 47
    Par défaut
    bon j`ai trouvé la solution après plusieurs tentatives :

    1- Il faut créer votre propre service si vous ne posséder pas le même schéma que celle définit par défaut dans 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
     
     
    public class MyUserDetailsServiceTest  implements UserDetailsService {
     
     
    	@Override
    	public UserDetails loadUserByUsername(final String username)
    			throws UsernameNotFoundException, DataAccessException {
    		if (username==null || "".equals(username)) {
    			throw new UsernameNotFoundException("login is null");
    		}
    		else 
    		{
    		/*****************************************************/
     
    // Ici vous chercher vos données depuis la BD
     
    }
    org.springframework.security.userdetails.User authUser = new org.springframework.security.userdetails.User(username, password, true, true, true, true,authorities);
    		        return authUser;
    2- Il faut construire une méthode pour les rôles ( c`est très important )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	private GrantedAuthority[] makeGrantedAuthorities(List user) {
            GrantedAuthority[] result = new GrantedAuthority[user.size()];
          // mettre les rôles dans result 
            return result;
        }
    3- Votre Authentification fonctionne bien avec spring security

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Spring Security] question concernant un filtre d'ACEGI
    Par flamant dans le forum Spring Web
    Réponses: 2
    Dernier message: 22/10/2008, 07h37
  2. [Security] Spring security VS JAAS
    Par Sniper37 dans le forum Spring
    Réponses: 2
    Dernier message: 21/08/2008, 16h54
  3. [Spring Security] Authentification par groupe LDAP
    Par titeuf92 dans le forum Spring Web
    Réponses: 2
    Dernier message: 25/06/2008, 10h28
  4. Spring JSf configuration
    Par nalvon dans le forum JSF
    Réponses: 1
    Dernier message: 01/02/2007, 05h43

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