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

Wildfly/JBoss Java Discussion :

j_security_check et Struts2


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre chevronné

    Homme Profil pro
    Appui fonctionnel senior
    Inscrit en
    Juin 2007
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Appui fonctionnel senior
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 461
    Points : 2 211
    Points
    2 211
    Par défaut j_security_check et Struts2
    Bonjour à tous,

    Après plusieurs jours à parcourir le Web à la recherche d'une information utile, je me résigne à faire un appel à l'aide.

    Pour ce projet, nous utilisons essentiellement les outils suivants :

    • JBoss 6.1
    • Struts 2.5
    • Apache Tiles 3.0.5
    • EclipseLink 1.1.3


    Dans le cadre d'une application JEE, nous utilisions Apache Shiro pour toute la partie identification. Suite à une demande des urbanistes SI, nous sommes maintenant en train de remplacer Shiro par les fontionnalités internes de JBoss.

    Après plusieurs jours de prises de têtes intenses pour réussir à faire fonctionner JBoss et Struts2, j'arrive maintenant jusqu'à la page de connexion qui ne fonctionne malheureusement pas.

    En effet, à chaque tentative, JBoss pour restitue la même page, que les identifiants soient bons ou non. A priori, l'appel au DatabaseServerLoginModule est bien effectué vu que je retrouve la requête de sélection du mot de passe dans les dernières requêtes exécutées sur la base.
    Je constate également qu'après la validation, JBoss me réoriente vers la page "127.0.0.1:8080/app/j_security_check". Je ne suis pas sûr que voir "j_security_check" à la fin de l'URL soit bon signe...

    Je précise que, côté serveur (et grâce au dev mode de Struts2), je reçois les messages d'erreur suivant lors de la validation du formulaire de connexion :
    11:35:45,102 ERROR [stderr] (http-/127.0.0.1:8080-1) ERROR ParametersInterceptor Developer Notification (set struts.devMode to false to disable this message):
    11:35:45,103 ERROR [stderr] (http-/127.0.0.1:8080-1) Unexpected Exception caught setting 'j_password' on 'class com.opensymphony.xwork2.ActionSupport: Error setting expression 'j_password' with value ['password', ]
    11:35:45,104 ERROR [stderr] (http-/127.0.0.1:8080-1) ERROR ParametersInterceptor Developer Notification (set struts.devMode to false to disable this message):
    11:35:45,105 ERROR [stderr] (http-/127.0.0.1:8080-1) Unexpected Exception caught setting 'j_username' on 'class com.open symphony.xwork2.ActionSupport: Error setting expression 'j_username' with value ['username', ]
    De ce que je comprends, j'ai l'impression que Struts intercepte l'appel à j_security_check au lieu de laisser JBoss s'en occuper.
    C'est pourquoi j'ai ajouté une exclusion dans le fichier struts.xml, mais cela ne semble servir à rien.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <constant name="struts.action.excludePattern" value="/j_security_check,/images" />

    J'ai eu beau chercher sur internet, je n'ai trouvé personne qui semble avoir le même problème
    Je précise que je ne souhaite pas particulièrement créer une action pour gérer l'identification, et que le processus de base me suffit amplement.
    Le problème est-il bien un problème de configuration de Struts, ou est-ce que je m'y prends mal quelque part ?


    Voici les fichiers de configuration (un peu épurés):
    web.xml
    Code xml : 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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
     
        <display-name>PILAF</display-name>
     
        <listener>
            <listener-class>
                org.apache.struts2.tiles.StrutsTilesListener
            </listener-class>
        </listener>
     
        <context-param>
            <param-name>tilesDefinitions</param-name>
            <param-value>/WEB-INF/tiles.xml</param-value>
        </context-param>
     
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
     
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
            <dispatcher>ERROR</dispatcher>
        </filter-mapping>
     
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>Public Area</web-resource-name>
                <url-pattern>/images/*</url-pattern>
                <url-pattern>/css/*</url-pattern>
            </web-resource-collection>
        </security-constraint>
     
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>All resources</web-resource-name>
                <description>Protects all resources</description>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>admin</role-name>
                <role-name>std</role-name>
            </auth-constraint>
        </security-constraint>
     
        <security-role>
            <role-name>admin</role-name>
        </security-role>
     
        <security-role>
            <role-name>std</role-name>
        </security-role>
     
        <login-config>
            <auth-method>FORM</auth-method>
            <form-login-config>
                <form-login-page>/login</form-login-page>
                <form-error-page>/login</form-error-page>
            </form-login-config>
        </login-config>
     
        <session-config>
            <session-timeout>60</session-timeout>
        </session-config>
     
        <error-page>
            <error-code>
                404
            </error-code>
            <location>
                /404
            </location>
        </error-page>
     
        <!-- Les welcomes Files-->
        <welcome-file-list>
            <welcome-file>/accueil</welcome-file>
        </welcome-file-list>
     
     
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.css</url-pattern>
        </servlet-mapping>
     
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.js</url-pattern>
        </servlet-mapping>
    </web-app>

    jboss-web.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-web>
      <context-root>PILAF</context-root>
      <security-domain>java:/jaas/PilafPolicy</security-domain>
    </jboss-web>

    struts.xml
    Code xml : 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
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
     
    <struts>
     
        <constant name="struts.enable.DynamicMethodInvocation" value="false" />
        <constant name="struts.devMode" value="true" />
        <constant name="struts.action.excludePattern" value="/j_security_check,/images"/>
     
        <package name="default" namespace="/" extends="struts-default">
            <result-types>
                <result-type name="tiles"
                             class="org.apache.struts2.views.tiles.TilesResult" />
                <result-type name="json" class="org.apache.struts2.json.JSONResult" />
            </result-types>
            <default-action-ref name="index" />
     
            <global-results>
                <result name="error">/error.jsp</result>
            </global-results>
     
            <global-exception-mappings>
                <exception-mapping exception="java.lang.Exception" result="error"/>
            </global-exception-mappings>
     
            <action name="accueil" class="com.app.action.InitAccueilAction" method="execute">
                <result name="success" type="tiles">/welcome.tiles</result>
            </action>
     
            <action name="404">
                <result name="success">/404</result>
            </action>
     
            <action name="logout">
     
            </action>
     
            <action name="login">
                <result name="success">login.jsp</result>
            </action>
        </package>
    </struts>

    Une partie du standalone.xml (config JBoss donc)
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <security-domain name="PilafPolicy" cache-type="default">
        <authentication>
            <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
                <module-option name="dsJndiName" value="java:/jdbc/PilafDS"/>
                <module-option name="principalsQuery" value="SELECT password FROM UTILISATEUR WHERE username = ?"/>
                <module-option name="rolesQuery" value="SELECT role_name_actif, 'Roles' FROM UTILISATEUR WHERE username = ?"/>
                <module-option name="hashAlgorithm" value="SHA-256"/>
                <module-option name="hashEncoding" value="base64"/>
            </login-module>
        </authentication>
    </security-domain>

    login.jsp (qui est très sale...)
    Code html : 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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <!-- link rel="shortcut icon" href="../favicon.ico"-->
            <link rel="stylesheet" type="text/css" href="css/style.css">
            <link rel="stylesheet" type="text/css" href="css/style.html.css">
            <title>Formulaire de login</title>
            <script type="text/javascript" src="js/modernizr.custom.63321.js"></script>
            <!--[if lte IE 7]><style>.main{display:none;} .support-note .note-ie{display:block;}</style><![endif]-->
            <style type="text/css">
                body {
                    background: #FEFEFE ;
                }
            </style>
        </head>
     
        <body>
     
            <div class="container" align="center">
     
                <section class="main">
                    <form action="j_security_check" method="post" >
                        <table width=400 cellpadding=2>
                            <TR>
                                <TD colspan=2>
                                    <h1><span class="log-in">Connexion à PILAF</span></h1>
                                    <br>
                                </TD>
                            </TR>
                            <TR>
                                <TD>
                                    <label><i class="icon-user"></i>Identifiant</label>
                                </TD>
                                <TD>
                                    <label><i class="icon-lock"></i>Mot de passe</label>
                                </TD>
                            </TR>
                            <TR>
                                <TD  valign="top">
                                    <p class="float">
                                        <input type="text" name="j_username" />
                                    </p>
                                </TD>
                                <td valign="top">
                                    <p class="float">
                                        <input type="password" name="j_password" class="showpassword" />
                                    </p>
                                </TD>
                            </TR>
                            <TR>
                                <TD colspan=2>
                                    <p class="float">
                                        <input type="submit" value="Valider">
                                    </p>
                                </TD>
                            </TR>
                            <TR>
                                <TD colspan=2>
                                    <br><br><br>
                                </TD>
                            </TR>
                        </table>
                    </form>
                </section>
     
     
            </div>
            <!-- jQuery if needed -->
            <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
            <script type="text/javascript">
    $(function () {
    $(".showpassword").each(function (index, input) {
     
        var $input = $(input);
        $("<p class='opt'/>").append(
                $("<input type='checkbox' class='showpasswordcheckbox' id='showPassword' />").click(function () {
            var change = $(this).is(":checked") ? "text" : "password";
            var rep = $("<input placeholder='Password' type='" + change + "' />")
                    .attr("id", $input.attr("id"))
                    .attr("name", $input.attr("name"))
                    .attr('class', $input.attr('class'))
                    .val($input.val())
                    .insertBefore($input);
            $input.remove();
            $input = rep;
        })
                ).append($("<label for='showPassword'/>").text("Afficher en clair")).insertAfter($input.parent());
    });
     
    $('#showPassword').click(function () {
        if ($("#showPassword").is(":checked")) {
            $('.icon-lock').addClass('icon-unlock');
            $('.icon-unlock').removeClass('icon-lock');
        } else {
            $('.icon-unlock').addClass('icon-lock');
            $('.icon-lock').removeClass('icon-unlock');
        }
    });
    });
            </script>
            <center>
                <img src="<s:url value="/images/logo.jpg"/>" height="212" width="412"/>
            </center>
    </html>

  2. #2
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2013
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 269
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    juste pour être sûr, pour tes tests, tu fais bien autre chose que 127.0.0.1:8080/app/login ?

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je ne serais pas surpris que le problème vienne d'un problème de chiffrement de ton mot de passe dans la base de données...
    Comment as-tu enregistré les mots de passe ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre actif
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 178
    Points : 274
    Points
    274
    Par défaut
    Bonjour,
    Quand tu écris JBoss 6.1 tu parles d'EAP ou de JBoss AS ? As tu essayé d'activer les logs en mode debug ?

Discussions similaires

  1. Votre avis sur Struts2 et WebWork
    Par azerr dans le forum Struts 2
    Réponses: 31
    Dernier message: 30/07/2007, 17h34
  2. Pb j_security_check sous eclipse
    Par ariellle dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 05/11/2006, 23h45
  3. configuration du Realm (j_security_check)
    Par zola dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 30/05/2006, 06h19
  4. [JAAS]Login j_security_check Demande Original
    Par djoukit dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 17/01/2006, 18h06
  5. [STRUTS] [j_security_check]
    Par canou94 dans le forum Struts 1
    Réponses: 7
    Dernier message: 04/10/2005, 13h01

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