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

JSF Java Discussion :

Problème d'authentification en Java/J2EE


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Par défaut Problème d'authentification en Java/J2EE
    Bonjour,

    Je viens de développer une application en java/J2EE avec du JSF.

    Mon application se compose de plusieurs pages dont une page d'authentification où l'utilisateur entre son login/mp.

    Le problème est que s'il rentre directement dans la barre d'adresse l'url d'une page de l'application sans être loger (il saute ainsi la page accueil authentification), il accède au contenu de cette dernière.

    Comment faire pour empêcher cela ?

    Merci d'avance pour vos réponses.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Soit tu le fais à la main en utilisant les filtres, soit tu paramètres ton fichier web.xml pour protéger tes pages.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Par défaut
    Merci pour ta réponse.

    Soit tu le fais à la main en utilisant les filtres
    Désolé, mais je vois pas trop ce que tu veux dire.
    En effet, si on se connecte à la page accueil alors on a bien la page authentification qui est ouverte ou l'utilisateur doit entrer son mot de passe et valider pour accéder à la page suivante.

    Le problème est comment empêcher que l'utilisateur entre dans la barre d'adresse du navigateur: http://localhost/Appli/page2.jsp...
    Dans ce cas il saute la page http://localhost/Appli/authentification.jsp...

    soit tu paramètres ton fichier web.xml pour protéger tes pages.
    Et je ne vois pas comment paramétrer cela dans le fichier web.xml

    Merci d'avance.

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Filtre :

    Lorsque tu fais l'authentification, tu places quelque chose dans la session qui permette de savoir que tu es authentifié.
    Ton filtre n'a plus qu'à tester cet objet et en cas d'absence, rediriger vers l'authentification.

    web.xml :

    Il faut mettre en place les sécurités via <security-constraint>


    La solution 2 est la mieux...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Ce qui est placé dans ton répertoire WEB-INF n'est pas accessible directement via l'URL.
    C'est déjà un bon début.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Par défaut
    Merci pour ta réponse.

    Dans un premier temps je vais utiliser la solution 1...

    Pour cela je fais dans ma page JSP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <%
    PaydClientBean bean =(PaydClientBean)session.getAttribute("clientBean");
    			
    if(!bean.isConnect())
    {
          // Erreur il faut afficher la page d'acceuil
          // Comme faire cette redirectino en java ?????
    }
    %>
    Merci d'avance pour votre aide.

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Si tu veux utiliser les filtres, suis simplement mon exemple. t'as rien comme programmation dans tes jsp.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Par défaut
    Ce qui est placé dans ton répertoire WEB-INF n'est pas accessible directement via l'URL.
    C'est déjà un bon début.
    Donc je mets toutes mes pages dans le dossier WEB-INF sauf ma page authentification. D
    ans mon fichier faces-config devant toutes mes adresses de page je rajoute :

    Au lieu de:

    <from-view-id>/page1.jsp</from-view-id>
    <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/page2.jsp</to-view-id>


    je fais

    <from-view-id>WEB-INF/page1.jsp</from-view-id>
    <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>WEB-INF/page2.jsp</to-view-id>


    Où le WEB-INF est inutile ???

    Merci d'avance pour votre aide, vous êtes super sympa.

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Un filtre est une classe java par laquelle passent toutes tes requetes d'accès au serveur, tu peux donc y programmer le fait que si une session n'est pas ouverte alors il te redirige automatiquement dans la page de login.exemple de filtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <filter>
      <display-name>Session Filter</display-name>
      <filter-name>name_filter</filter-name>
      <filter-class>ton_package.TaClasseFilter</filter-class>
     </filter>
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <filter-mapping>
      <filter-name>name_filter</filter-name>
      <url-pattern>/*</url-pattern>
     </filter-mapping>
    Et un exemple de ta classe Filter :
    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
     
     
    public class TaClasseFilter implements Filter{
     
      /**
       * 
       */
      public void destroy() {
        // TODO Auto-generated method stub
        /**
         * 
         */
      }
     
      /**
       * 
       */
      public void doFilter(ServletRequest request, ServletResponse response, 
        FilterChain filterChain) throws IOException, ServletException { 
        if ((request instanceof HttpServletRequest) 
          && (response instanceof HttpServletResponse)) { 
          HttpServletRequest hRequest = (HttpServletRequest) request; 
          HttpServletResponse hResponse = (HttpServletResponse) response; 
     
          if (checkResource(hRequest)) { 
        	  String timeoutUrl = null;
        	  timeoutUrl = hRequest.getContextPath() + ConstantDivers.LOGIN_URL_PAGE;
            if (checkSession(hRequest)) { 
              logger.info("doFilter :Session is invalid!");
              hResponse.sendRedirect(timeoutUrl); 
              return; 
            }
              if (hRequest.getSession(false) != null) { 
                HttpSession session = hRequest.getSession(false);
                AbstractUser aUser = (AbstractUser)session.getAttribute(ConstantDivers.CURRENT_USER_IN_SESSION);
                if (aUser == null) { 
                  logger.info("Session is invalid! redirecting to login Page: {}");
                  hResponse.sendRedirect(timeoutUrl);
                  return; 
              }
            }
          }
     
        } 
        filterChain.doFilter(request, response); 
      } 
     
      @SuppressWarnings("cast")
      private boolean checkResource(HttpServletRequest request) { 
        String requestPath = request.getRequestURI(); 
        HttpServletRequest hRequest = (HttpServletRequest) request; 
        logger.debug("checkResource"+ requestPath);
        return !(requestPath.contains("css") || requestPath.contains(ConstantDivers.LOGIN_URL_PAGE) ||  requestPath.equals(hRequest.getContextPath() + "/"));
     
      } 
     
      private boolean checkSession(HttpServletRequest request) { 
        return request.getRequestedSessionId() != null 
            && !request.isRequestedSessionIdValid(); 
      } 
     
     
      /**
       * 
       */
      public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
     
      }
    }

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

Discussions similaires

  1. Problème d'authentification application j2EE
    Par momy2014 dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 13/05/2015, 22h38
  2. Réponses: 1
    Dernier message: 27/05/2014, 22h53
  3. Problème d'authentification Java
    Par RimyAD dans le forum JDBC
    Réponses: 3
    Dernier message: 04/11/2013, 06h28
  4. Problème de compilation avec Java J2EE
    Par izem23 dans le forum Java EE
    Réponses: 1
    Dernier message: 07/07/2010, 16h54
  5. Réponses: 3
    Dernier message: 02/06/2008, 16h43

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