Bonjour,
J'ai une application web sécurisé par mot de passe DIGEST MD5. Lorsque j'accède à ma servlet via Firefox, il me demande le login et mot de passe et on voit bien dans l'entête de la requête que le mot de passe n'est pas passé en clair (il y a le paramètre Authorization avec nonce).
J'essaie d'appeler cette servlet par du code Java mais je reçois toujours une erreur 401 "La requête nécessite une authentification HTTP ()".
Voilà mon code :
J'ai essayé d'envoyer le mot de passe crypter avec la méthode suivante mais ça ne fonctionne pas mieux :
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 GetMethod httpMethode = new GetMethod("http://localhost:8080/portail-raster-service/rasterServlet?"); httpMethode.setDoAuthentication( true ); HttpClient client = new HttpClient(); client.getState().setCredentials( new AuthScope("http://localhost:8080", 8080, null, "MD5"), new UsernamePasswordCredentials("envol", "motdepasse") ); client.executeMethod(httpMethode); if(httpMethode.getStatusCode() != HttpStatus.SC_OK) { System.out.println(httpMethode.getResponseBodyAsString()); } else { System.out.println(httpMethode.getResponseBodyAsString()); }
Au niveau de mon web.xml, j'ai déclaré :
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 public static String getEncodedPassword(String key) { byte[] uniqueKey = key.getBytes(); byte[] hash = null; try { hash = MessageDigest.getInstance("MD5").digest(uniqueKey); } catch (NoSuchAlgorithmException e) { throw new Error("no MD5 support in this VM"); } StringBuffer hashString = new StringBuffer(); for ( int i = 0; i < hash.length; ++i ) { String hex = Integer.toHexString(hash[i]); if ( hex.length() == 1 ) { hashString.append('0'); hashString.append(hex.charAt(hex.length()-1)); } else { hashString.append(hex.substring(hex.length()-2)); } } System.out.println(hashString.toString()); return hashString.toString(); }
Et dans tomcat-users.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 <security-constraint> <display-name>Sécurité sous Tomcat</display-name> <web-resource-collection> <web-resource-name>Ressource protégée</web-resource-name> <url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>envol</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>DIGEST</auth-method> <realm-name>Authentification pour Tomcat</realm-name> </login-config> <!-- Rôles utilisés dans l'application --> <security-role> <description>Administrateur</description> <role-name>envol</role-name> </security-role>
Merci de votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <role rolename="envol"/> <user password="motdepasse" roles="envol" username="envol"/>
WwAvE
Partager