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

Apache Discussion :

.htaccess et servlets


Sujet :

Apache

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 274
    Points : 192
    Points
    192
    Par défaut .htaccess et servlets
    Bonjour,

    j'aimerai accéder avec une servlet à un fichier se trouvant dans un répertoire protégé par un fichier .htaccess.
    Cependant la servlet me renvoie constamment l'erreur 401 (accès refusé). Quelqu'un a-t-il une solution ?

    Merci beaucoup

    Steve

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 376
    Points : 15 728
    Points
    15 728
    Par défaut
    il faut que tu mette le login et le mot de passe dans l'adresse
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://login:passe@serveur/répertoire/servlet

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 274
    Points : 192
    Points
    192
    Par défaut
    Merci pour cette info mathix, malheureusement ça ne fonctionne toujours pas.
    Pour être plus précis dans mon problème, j'appelle une page php avec ma servlet afin d'intégrer son code (qui représente un menu) autour de ma servlet. Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    URL theURL = new URL("http://localhost/nimda/headerB2B.php"); 
    	  	   	BufferedReader readerHttp = new BufferedReader(new InputStreamReader(theURL.openStream())); 
    		   	String ligne ;
    		   	while((ligne=readerHttp.readLine()) != null) 	
    		   		writer.println(ligne) ;
    C'est justement le fichier headerB2B.php qui est dans le répertoire protégé. Y'aurait-il une erreur dans mon fichier .htaccess ?
    Voici son contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AuthUserFile /etc/apache/htpasswd
    AuthName "Accès administration"
    AuthType Basic
    require valid-user
    Merci pour toute aide

    Steve

  4. #4
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 274
    Points : 192
    Points
    192
    Par défaut
    Euréka !!!

    En fait ma servlet accédait à un fichier dans ce répertoire protégé et le lisait. Tout ça grâce à un objet URL. J'ai trouvé une méthode qui permet d'encoder dans mon url le nom d'utilisateur et le mot de passe.
    La voici, pour les personnes qui une fois seraient dans le même cas que moi (même si j'ai bien eu l'impression de me retrouver seul au monde cette fois-ci

    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
     
    public InputStream openURLForInput (URL url, String uname, String pword)
           throws IOException  {
           	conn = url.openConnection();
        	conn.setDoInput (true);
        	conn.setRequestProperty ("Authorization",
           	userNamePasswordBase64(uname,pword));
        	conn.connect ();
        return conn.getInputStream();
        }
     
      public String userNamePasswordBase64(String username, String password) {
        return "Basic " + base64Encode (username + ":" + password);
        }
     
      private final static char base64Array [] = {
          'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
          'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
          'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
          'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
          'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
          'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
          'w', 'x', 'y', 'z', '0', '1', '2', '3',
          '4', '5', '6', '7', '8', '9', '+', '/'
     };
     
      private static String base64Encode (String string)    {
        String encodedString = "";
        byte bytes [] = string.getBytes ();
        int i = 0;
        int pad = 0;
        while (i < bytes.length) {
          byte b1 = bytes [i++];
          byte b2;
          byte b3;
          if (i >= bytes.length) {
             b2 = 0;
             b3 = 0;
             pad = 2;
             }
          else {
             b2 = bytes [i++];
             if (i >= bytes.length) {
                b3 = 0;
                pad = 1;
                }
             else
                b3 = bytes [i++];
             }
          byte c1 = (byte)(b1 >> 2);
          byte c2 = (byte)(((b1 & 0x3) << 4) | (b2 >> 4));
          byte c3 = (byte)(((b2 & 0xf) << 2) | (b3 >> 6));
          byte c4 = (byte)(b3 & 0x3f);
          encodedString += base64Array [c1];
          encodedString += base64Array [c2];
          switch (pad) {
           case 0:
             encodedString += base64Array [c3];
             encodedString += base64Array [c4];
             break;
           case 1:
             encodedString += base64Array [c3];
             encodedString += "=";
             break;
           case 2:
             encodedString += "==";
             break;
           }
          }
          return encodedString;
      }
    et voici le code de la manière dont j'appelle le fichier dans ma servlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try
    		{
    			BufferedReader readerHttp = new BufferedReader(new InputStreamReader(openURLForInput(new URL("http://serveur/nomPage"), "nomUtilisateur", "MotPasse")));
    		   	String ligne ;
    		   	while((ligne=readerHttp.readLine()) != null) 	
    		   		writer.println(ligne) ; 
    		}
    	   	catch(Exception e)
    	   	{
    	   		writer.println("Erreur d'appel de la page : " + e.getMessage()) ;	
    	   	}
    Encore merci pour vos réponses !

    Steve

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

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 09h54
  2. [servlet] et .htaccess
    Par rohstev dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 06/05/2004, 18h05
  3. [JSP/Servlet] Outils pour developper?
    Par BenoitM dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 04/05/2004, 11h03
  4. [servlet] initialisation d'objets
    Par tiPouick dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/08/2003, 12h12
  5. Servlet dans Eclipse ?
    Par unflag dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/04/2003, 18h46

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