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

Struts 1 Java Discussion :

Quelle stratégie pour l'authentification ?


Sujet :

Struts 1 Java

  1. #1
    Invité
    Invité(e)
    Par défaut Quelle stratégie pour l'authentification ?
    Presque systématiquement dans une appli web on a besoin que l'utilisateur soit authentifié. Du coup la méthode classique c'est de fournir un "token" au navigateur.

    Mon problème avec struts est que je ne sais pas à quel moment effectuer la vérification d'authentification. Je n'ai qu'une seule servlet qui redirige vers des classes Action. Du coup je me suis dit que la vérification de l'authentification pouvait se faire dans les classes action.

    Le problème vient du fait qu'avant de passer par la classe Action Struts utilise la méthode "validate" et si la validation échoue je suis redirigé vers la page définie dans l'attribut "init". Avec ce scénario on ne passe pas par la phase d'authentification (vu qu'on ne lance pas la méthode execute de la classe Action).

    Voilà comment je définis une action dans struts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <action path="/monAction"
                type="MaClasseAction"
                name="monFormulaire" input="/jsp/formulaire.jsp">
                <forward name="SUCCESS" path="/jsp/résultat.jsp" />
                <forward name="NOT_AUTHENTIFIED" path="index.jsp" />
                <forward name="ERROR" path="/jsp/error.jsp" />
            </action>
    Alors comment faire pour avoir une authentification propre ? Je peux toujours faire les tests d'authentification dans le validate du formulaire mais que faire lorsque j'ai une action sans formulaire ?

  2. #2
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    Non ce serait pas propre comme solution.

    Ajoutes une classe controleur et sa declaration dans ton fichier de configuration struts.

    Cette classe sera appelée avant toute autre action. Tu pourras y vérifier que ton user est connecté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <controller tempDir="file/tmp">
            <set-property property="processorClass" value="package.MaClasseController"/>
        </controller>

  3. #3
    Invité
    Invité(e)
    Par défaut
    Le problème du request processor c'est que
    1) J'en ai déjà un (DelegatingRequestProcessor de Spring).
    2) Toutes les actions ne nécessitent pas forcément une authentification (tout bêtement accéder à la page d'authentification ne demande pas d'être authentifié).

    Et puis est-ce qu'avec cette méthode je peux utiliser les ActionErrors ? Pour qu'en étant redirigé sur ma page de login je puisse afficher un message du style "Vous devez vous connecter avant de continuer".

    Il me faudrait une solution qui me permette de spécifier si une action nécessite ou pas d'authentification.

  4. #4
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    Citation Envoyé par kei2906 Voir le message
    Et puis est-ce qu'avec cette méthode je peux utiliser les ActionErrors ?
    Tu peux aussi créer tes propres ActionErrors dans ton action ou autre methode.

    Citation Envoyé par kei2906 Voir le message
    Il me faudrait une solution qui me permette de spécifier si une action nécessite ou pas d'authentification.
    C'est une bonne idée mais je ne connais pas la solution. Dans ce cas de figure, le plus simple s'est de placer ton user en session et de vérifier dans chaque action necessitant d'être authentifié que le user est bien présent...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jdvacheron Voir le message
    C'est une bonne idée mais je ne connais pas la solution. Dans ce cas de figure, le plus simple s'est de placer ton user en session et de vérifier dans chaque action nécessitant d'être authentifié que le user est bien présent...
    C'est ce que je fais déjà. Ca marche très bien sauf quand Struts valide le formulaire, si celui-ci est mal rempli, on est directement renvoyé sur la page définie dans l'attribut init de l'action sans passer par la méthode execute de la classe Action (celle qui vérifie l'authentification). Ainsi un utilisateur entrant l'url d'une action à la main, sans s'être identifié, peut atteindre une page à laquelle il ne devrait pas avoir accès. Fonctionnellement ce n'est pas grave vu qu'il ne pourra pas utiliser cette page pour effectuer une action mais c'est juste que ça fait pas propre.

    Une solution consisterait à effectuer la validation manuellement dans la classe Action, après avoir vérifié l'authentification mais c'est dommage de détourner le processus normal de validation de formulaire de Spring.

    Sinon en cherchant un peu j'ai vu qu'on pouvait mettre en place des filtres dans le fichier web.xml de sorte que certaines url (par exemple commençant par /secure/* ) soient redirigées vers une classe particulière. Du coup c'est une solution indépendante de Struts. Reste à voir si, une fois l'authentification passée, je peux revenir dans le processus normal de Struts.

  6. #6
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    Peux tu joindre ton fichier de conf stp?

    A premiere vue, je dirai que tes paramètres "validate" pour tes actions sont à true. Essaies avec false.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oui mes paramètres validate sont à true (valeur par défaut). J'avais pris le parti justement d'utiliser la validation des formulaires et voir s'il n'existait pas un moyen de gérer les autorisations quand même, plus en amont. A priori si c'est faisable c'est en-dehors Struts.

    En plus dans le cadre de l'application que je vais devoir réaliser il serait préférable que les contrôles d'authentification ne se fassent pas dans les classes Action. En effet je vais devoir développer une librairie de composants réutilisables qui serviront à développer de nouvelles applis. Du coup on ne peut pas présumer de la méthode d'authentification.

    A mon avis quand on veut pouvoir utiliser la validation des formulaires ou encore ne pas mettre l'authentification dans les classes Action il faut le faire en amont, grâce à des filtres. Pour le moment je n'ai pas trouvé d'autres solutions mais je reste ouvert si quelqu'un détient la solution miracle

    Sinon j'ai pas vraiment de fichier de conf encore, c'est plus une question d'ordre générale, une réflexion sur les méthodes d'authentification avec un framework Struts.

  8. #8
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    Citation Envoyé par kei2906 Voir le message
    Oui mes paramètres validate sont à true (valeur par défaut). J'avais pris le parti justement d'utiliser la validation des formulaires
    Tu peux tjs valider manuellement ton form dans tes actions.
    Citation Envoyé par kei2906 Voir le message
    et voir s'il n'existait pas un moyen de gérer les autorisations quand même, plus en amont.
    Sinon il faut que tu set ton user dans tous tes forms et que ajoute la propriete dans ton fichier de validation.
    Citation Envoyé par kei2906 Voir le message
    A priori si c'est faisable c'est en-dehors Struts..

    En plus dans le cadre de l'application que je vais devoir réaliser il serait préférable que les contrôles d'authentification ne se fassent pas dans les classes Action. En effet je vais devoir développer une librairie de composants réutilisables qui serviront à développer de nouvelles applis. Du coup on ne peut pas présumer de la méthode d'authentification.
    Je suis preneur de ton framework

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jdvacheron Voir le message
    Tu peux tjs valider manuellement ton form dans tes actions.
    Oui, je pense que si on veut garder la validation du formulaire c'est comme ça qu'il faut faire en mettant validate="false".

    Citation Envoyé par jdvacheron Voir le message
    Je suis preneur de ton framework
    C'eût été avec plaisir mais je fais ça dans le cadre d'un stage et ça m'étonnerait que l'entreprise me laisse diffuser mes travaux
    En plus ce sont surtout des composants spécifiques aux applis internes de l'entreprise.

Discussions similaires

  1. [Débutant] Quelle stratégie pour mon projet ?
    Par patguits dans le forum Services Web
    Réponses: 0
    Dernier message: 09/09/2013, 13h49
  2. [Généralités] Quelle stratégie pour la modification de structure ?
    Par cladoo dans le forum WinDev
    Réponses: 9
    Dernier message: 22/05/2013, 10h07
  3. Réponses: 3
    Dernier message: 23/05/2011, 10h39
  4. Quelle stratégie pour coupler Hibernate et Swing ?
    Par sethys dans le forum Hibernate
    Réponses: 5
    Dernier message: 09/10/2007, 19h38
  5. Réponses: 4
    Dernier message: 04/04/2006, 19h19

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