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 :

authentification base de données [Security]


Sujet :

Spring Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 14
    Points
    14
    Par défaut authentification base de données
    Bonjour,

    je développe une application web j2ee (jsf-spring-hibernate), je souhaite gérer la sécurisation avec spring security, le problème c'est que qu'on je souhaite m'authentifier le couple login/mot de passe n'est pas pris en compte.
    voici le contenu de applicationContext-security.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
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:security="http://www.springframework.org/schema/security"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           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.4.xsd">
     
     
     
        <security:http auto-config="true">
            <security:intercept-url pattern="/pages/**"
                                    access="ROLE_ADMIN,ROLE_FORMATEUR" />
            <security:form-login login-page='/login.jsf' default-target-url="/pages/index.jsf"/>
        </security:http>
     
        <security:authentication-provider user-service-ref='myUserDetailsService' />
     
        <bean id="myUserDetailsService" class="org.springframework.security.userdetails.jdbc.JdbcDaoImpl">
            <property name="dataSource" ref="dataSource"/>
            <property name="usersByUsernameQuery" value="SELECT p.matricule_pers as username, p.mdp_compte as password, enabled FROM personne p WHERE p.matricule_pers = ?"/>
            <property name="authoritiesByUsernameQuery" value="SELECT p.matricule_pers as username p.profil_compte as role FROM personne p WHERE p.matricule_pers = ?"/>
        </bean>
     
     
    </beans>
    j'extrais les données d'une seule table (personne) qui contient le login, le mot de passe et le role de l'utilisateur, merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 66
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par meryazer Voir le message
    Bonjour,

    je développe une application web j2ee (jsf-spring-hibernate), je souhaite gérer la sécurisation avec spring security, le problème c'est que qu'on je souhaite m'authentifier le couple login/mot de passe n'est pas pris en compte.
    voici le contenu de applicationContext-security.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
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:security="http://www.springframework.org/schema/security"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           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.4.xsd">
     
     
     
        <security:http auto-config="true">
            <security:intercept-url pattern="/pages/**"
                                    access="ROLE_ADMIN,ROLE_FORMATEUR" />
            <security:form-login login-page='/login.jsf' default-target-url="/pages/index.jsf"/>
        </security:http>
     
        <security:authentication-provider user-service-ref='myUserDetailsService' />
     
        <bean id="myUserDetailsService" class="org.springframework.security.userdetails.jdbc.JdbcDaoImpl">
            <property name="dataSource" ref="dataSource"/>
            <property name="usersByUsernameQuery" value="SELECT p.matricule_pers as username, p.mdp_compte as password, enabled FROM personne p WHERE p.matricule_pers = ?"/>
            <property name="authoritiesByUsernameQuery" value="SELECT p.matricule_pers as username p.profil_compte as role FROM personne p WHERE p.matricule_pers = ?"/>
        </bean>
     
     
    </beans>
    j'extrais les données d'une seule table (personne) qui contient le login, le mot de passe et le role de l'utilisateur, merci d'avance pour votre aide.
    Bonjour
    Tu peux préciser l'erreur ?
    login/mot de passe n'est pas pris en compte? çàd quoi ? reset ?
    ROLE_ADMIN,ROLE_FORMATEUR? existent dans ta base personne ?

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    comme si j'ai tapez un login/mot de passe erroné, ROLE_ADMIN,ROLE_FORMATEUR existe dans la base, je précise aussi que je veux extraire tous ces informations depuis une seule table (login+mot de passe+role),
    j'ai rapporté quelques modification sur applicationContext-security.xml et toujours le même probleme voici le nouveau:
    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
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:security="http://www.springframework.org/schema/security"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	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.4.xsd">
     
     
    	<security:http auto-config="true">
    		<security:intercept-url pattern="/pages/**"
    			access="ROLE_ADMIN,ROLE_FORMATEUR" />
    		<security:form-login login-page='/login.jsf'
    			default-target-url="/pages/index.jsf" authentication-failure-url="/noFilter.jsf" />
    	</security:http>
     
     
    	<security:authentication-provider>
    		<security:user-service>
    			<security:user name="test" password="test" authorities="ROLE_ADMIN" />
    		</security:user-service>
    		<security:jdbc-user-service
    			data-source-ref="dataSource"
    			users-by-username-query="SELECT u.matricule_pers as 'username', u.mdp_compte as 'password', u.active_pers as 'enabled' FROM personne u WHERE u.matricule_pers = ?" />
    	</security:authentication-provider>
     
    </beans>
    j'ai ajouté la ligne suivante juste pour vérifier que la vérification login/mdp marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <security:user name="test" password="test" authorities="ROLE_ADMIN" />
    mon problème est juste avec la base de donnée, merci d'avance

  4. #4
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 66
    Points : 47
    Points
    47
    Par défaut
    désolée vraiment je ne vois pas l'erreur parce que j'ai fait presque la même chose mais deux tables une pour personne et une pour rôle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <security:http auto-config="true">
    		<security:intercept-url pattern="/login.jsp"
    			filters="none" />
    		<security:intercept-url pattern="/logo*"
    			filters="none" />
     
     
    		<security:intercept-url pattern="/**"
    			access="ROLE_GRH,ROLE_CHEF-DIRECT,ROLE_EMPLOYE" />
    		<security:form-login login-page='/login.jsp' />
    	</security:http>




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <security:authentication-provider
    		user-service-ref='myUserDetailsService' />
     
    	<bean id="myUserDetailsService"
    		class="org.springframework.security.userdetails.jdbc.JdbcDaoImpl">
    		<property name="dataSource" ref="dataSource" />
    		<property name="usersByUsernameQuery"
    			value="SELECT login as username, password, enabled , nom, prenom
                                                     FROM Employes WHERE login = ?" />
    		<property name="authoritiesByUsernameQuery"
    			value="SELECT login as username, role 
                                                           FROM roles WHERE login = ?" />
    	</bean>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <table>
    		<tr>
    			<td>Username:</td>
    			<td><input type="text" name="j_username"/></td>
    		</tr>
    		<tr>
    			<td>Password:</td>
    			<td><input type="password" name="j_password"/></td>
    		</tr>
    		<tr>
    			<td colspan='2'><input name="submit" type="submit" value="Login"/></td>
    		</tr>
    	</table>

  5. #5
    Membre régulier
    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
    Points : 83
    Points
    83
    Par défaut
    Salut,

    Pourrais tu ajouté le schéma de ta base stp??
    Merci.

    ou essaye avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <authentication-provider>
            <jdbc-user-service data-source-ref="dataSource"
                               authorities-by-username-query="select login as username, role as authority from employes where login = ?"
                               users-by-username-query="select login as username, password, enabled from employes where login = ?"/>
        </authentication-provider>

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Merci pour vos réponses,
    je crois bien que l'erreur viens du shemat de table, quand j'ai rajouté une autre table roles qui contiens le username comme clé étrangère, ça a marché, mais le problème c'est que je ne dois pas toucher à la structure de ma base, y a t-il pas autre moyen??
    à riderfun : j'ai essayé ta proposition mais toujours le même problème

  7. #7
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 66
    Points : 47
    Points
    47
    Par défaut
    ce n'est pas très détaillé mais ça peut t'aider!

    http://www.developpez.net/forums/d89...configuration/

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    il parait que ça pourrai m'aider, je vais essayé d'appliquer,merci

  9. #9
    Membre régulier
    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
    Points : 83
    Points
    83
    Par défaut
    Si j'ai bien compris, tu veux stocker le login, password, enabled et authority dans la même table?

    Met la structure de cette ici on pourra plus t'aider comme ça...

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    salut j'ai fini par personnaliser mon UserDetailsService et ça a marché, le lien suivant explique bien la démarche.

    http://www.codercorp.com/blog/spring...-security.html

    voici la structure de ma table:


    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
    CREATE TABLE personne
    (
      id_personne bigint NOT NULL DEFAULT nextval('id_pers_seq'::regclass),
      per_id_pers bigint,
      titre_pers character varying(50),
      matricule_pers character varying(50),
      cin_pers character varying(50),
      nom_pers character varying(50),
      prenom_pers character varying(50),
      date_naiss_pers date,
      adresse_pers character varying(100),
      code_postal_pers character varying(50),
      ville_pers character varying(50),
      email_pers character varying(50),
      tel1_pers character varying(50),
      tel2_pers character varying(50),
      sexe_pers character varying(50),
      desc_pers character varying(100),
      mdp_compte character varying(50),
      profil_compte character varying(50),
      premiere_authen_compte boolean,
      active_pers boolean,
      CONSTRAINT pk_personne PRIMARY KEY (id_personne),
      CONSTRAINT fk_personne_enregistr_personne FOREIGN KEY (per_id_pers)
          REFERENCES personne (id_personne) MATCH SIMPLE
          ON UPDATE RESTRICT ON DELETE RESTRICT
    )
    WITH (
      OIDS=FALSE
    );
    ALTER TABLE personne OWNER TO postgres;
     
    -- Index: enregistre_2_fk
     
    -- DROP INDEX enregistre_2_fk;
     
    CREATE INDEX enregistre_2_fk
      ON personne
      USING btree
      (per_id_pers);
     
    -- Index: personne_pk
     
    -- DROP INDEX personne_pk;
     
    CREATE UNIQUE INDEX personne_pk
      ON personne
      USING btree
      (id_personne);

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

Discussions similaires

  1. Problème d'authentification base de données
    Par jnmchl dans le forum Autres SGBD
    Réponses: 0
    Dernier message: 24/12/2014, 13h37
  2. authentification base de donnée perl/html/mysql
    Par LoLoBix dans le forum Web
    Réponses: 2
    Dernier message: 06/03/2009, 09h52
  3. Réponses: 4
    Dernier message: 31/10/2006, 19h01
  4. Réponses: 1
    Dernier message: 25/01/2006, 21h44

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