page d'authentification Java EE
salut a tous. au moment je d'enregistrer les informations des multiples utilisateurs de mon site, je crypte le mot de passe comme-ci :
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
|
private void traiterMotsDePasse( String motDePasse, String confirmation, Utilisateur utilisateur ) {
try {
validationMotsDePasse( motDePasse, confirmation );
} catch (FormValidationException e ) {
setErreur( CHAMP_PASS, e.getMessage() );
setErreur( CHAMP_CONF, null );
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**
* Utilisation de la bibliothèque Jasypt pour chiffrer le mot de pass éfficacement.
*
* L'algorithme SHA-256 est ici utilisé, avec par défaut un salage
* aléatoire et un grand nombre d'itérations de la fonction de hashage.
*
* La String retournée est de longueur 56 et contient le hash en Base64.
*/
ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor();
passwordEncryptor.setAlgorithm(ALGO_CHIFFREMENT );
passwordEncryptor.setPlainDigest( false );
String motDePasseChiffre = passwordEncryptor.encryptPassword(motDePasse);
utilisateur.setMotDePasse(motDePasseChiffre );
} |
au moment de les authentifier, je procède comme suit :
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 30 31 32 33 34 35 36 37 38 39
|
public boolean connecterUtilisateur( HttpServletRequest request ) {
/* Récupération des champs du formulaire */
boolean conn=false;
String matricule = getValeurChamp( request, CHAMP_MATRICULE );
String motDePasse = getValeurChamp( request, CHAMP_PASS );
Utilisateur utilisateur = new Utilisateur();
try {
/**
* Utilisation de la bibliothèque Jasypt pour chiffrer le mot de pass éfficacement.
*
* L'algorithme SHA-256 est ici utilisé, avec par défaut un salage
* aléatoire et un grand nombre d'itérations de la fonction de hashage.
*
* La String retournée est de longueur 56 et contient le hash en Base64.
*/
traiterMotsDePasse(motDePasse, utilisateur );
ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor();
passwordEncryptor.setAlgorithm(ALGO_CHIFFREMENT );
passwordEncryptor.setPlainDigest(false);
String motDePasseChiffre = passwordEncryptor.encryptPassword(motDePasse);
utilisateur.setMotDePasse(motDePasseChiffre );
traiterMatricule(matricule, utilisateur);
utilisateur.setMatricule(matricule);
boolean user=utilisateurDao.Authentifcate(utilisateur);
if (erreurs.isEmpty() && user==true) {
resultat = "Connexion Reussie.";
conn=true;
} else {
resultat = "Échec de connexion.";
}
} catch ( DAOMoptgisException e ) {
resultat = "Échec de connexion : une erreur imprévue est survenue, merci de réessayer dans quelques instants.";
e.printStackTrace();
}
return conn;
} |
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 30 31 32 33 34 35 36 37
|
public boolean Authentifcate(Utilisateur utilisateur){
java.sql.Connection connexion = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
boolean count=false;
try {
/* Récupération d'une connexion depuis la Factory */
connexion = this.moptGisFactory.getConnection();
preparedStatement=connexion.prepareStatement(connectUser);
preparedStatement.setString(1, utilisateur.getMatricule());
preparedStatement.setString(2, utilisateur.getMotDePasse());
resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
String mat=resultSet.getString(resultSet.findColumn("matricule"));
String password=resultSet.getString( resultSet.findColumn("mot_de_passe" ));
if(mat.equalsIgnoreCase(utilisateur.getMatricule()) && password.equalsIgnoreCase(utilisateur.getMotDePasse())){
System.out.println("Succes d'Authentification");
utilisateur.setMatricule(mat);
}
count=true;
}
if(!resultSet.next()){
throw new DAOMoptgisException( "Échec de connexion de l'utilisateur, aucune ligne trouvée dans la table." );
}
} catch ( SQLException e ) {
throw new DAOMoptgisException( e );
} catch ( DAOMoptgisException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
fermeturesSilencieuses( resultSet, preparedStatement, connexion );
}
System.out.println(count);
return count ;
} |
voici l'erreur qu'il me renvoit:
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
|
Échec de connexion de l'utilisateur, aucune ligne trouvée dans la table.
at com.mtn.database.UtilisateurDaoImpl.Authentifcate(UtilisateurDaoImpl.java:214)
at com.mtn.form.ConnexionForm.connecterUtilisateur(ConnexionForm.java:81)
at com.mtn.controller.Connexion.doPost(Connexion.java:87)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
false |
que faire pour résoudre ce problème ?