2012-08-13 5 views
0

Je trempe mon orteil dans les eaux troubles de Java et je travaille à travers le PackPub JavaEE 6 Avec Netbeans7 book. L'un des premiers exemples est l'authentification par formulaire qui implique la configuration du descripteur de déploiement (web.xml) avec un rôle de sécurité 'admin' et une contrainte. Il vous guide ensuite dans l'obtention du descripteur Glassfish en attribuant ces rôles à de nouveaux groupes, puis en utilisant la console Glassfish pour créer de nouveaux utilisateurs dans ces groupes. Lorsque j'essaie d'accéder à une page à l'intérieur de cette page protégée, la page de connexion s'affiche comme prévu, mais mon identifiant ne fonctionne pas. Même si je sais que je mets des informations d'identification valides créées dans la console glassfish, je reçois toujours ma page d'erreur de connexion (affichée sur l'URL j_security_check).Java formes auth avec j_security_check et Glassfish

La page de connexion est aussi simple que cela vient:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Log in to view secure content</title> 
    </head> 
    <body> 
     <h1>Log in</h1> 
     <form action="j_security_check" method="POST"> 
      <table border="0"> 
       <tbody> 
        <tr> 
         <td slign="right">Username: &nbsp;</td> 
         <td><input type="text" name="j_username" value="" /></td> 
        </tr> 
        <tr> 
         <td slign="right">Password: &nbsp;</td> 
         <td><input type="password" name="j_password" value="" /></td> 
        </tr> 
        <tr> 
         <td></td> 
         <td><input type="submit" value="Login" /></td> 
        </tr> 
       </tbody> 
      </table> 

     </form> 
    </body> 
</html> 

Je n'ai pas configuré quelque chose, et qu'il ya probablement quelque chose de vraiment de base, mais le livre ne permet pas de questions comme celle-ci si demandé si Je pourrais obtenir quelques pointeurs sur où débuter le débogage ou diagnostiquer ce problème.

Mon web.xml est:

<?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"> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <security-constraint> 
     <display-name>Admin Pages</display-name> 
     <web-resource-collection> 
      <web-resource-name>Administrative pages</web-resource-name> 
      <description/> 
      <url-pattern>/admin/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <description/> 
      <role-name>Admin</role-name> 
     </auth-constraint> 
    </security-constraint> 
    <login-config> 
     <auth-method>FORM</auth-method> 
     <realm-name>file</realm-name> 
     <form-login-config> 
      <form-login-page>/login.jsp</form-login-page> 
      <form-error-page>/loginerror.jsp</form-error-page> 
     </form-login-config> 
    </login-config> 
    <security-role> 
     <description>Administrators</description> 
     <role-name>Admin</role-name> 
    </security-role> 
    <security-role> 
     <description>public user</description> 
     <role-name>User</role-name> 
    </security-role> 
</web-app> 

GlassFish-web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app error-url=""> 
    <security-role-mapping> 
    <role-name>Admin</role-name> 
    <group-name>Admin</group-name> 
    </security-role-mapping> 
    <class-loader delegate="true"/> 
    <jsp-config> 
    <property name="keepgenerated" value="true"> 
     <description>Keep a copy of the generated servlet class' java code.</description> 
    </property> 
    </jsp-config> 
</glassfish-web-app> 

J'ai vérifié deux fois que dans la console Glassfish, je suis d'édition

Configuartions|Security|Realms|file 

et que mon nouvel utilisateur a une liste de groupe de 'Admin'

Merci

+0

Avez-vous vérifié le fichier de clé? – Alf

+0

@alf: Non, où est-ce? Je commence juste à ne pas savoir où/comment – LDJ

+0

si vous ne l'avez pas changé dans la console d'administration, son chemin est domain-dir/config/keyfile. Ouvrez-le et vérifiez s'il contient vos utilisateurs. – Alf

Répondre

0

vous utilisez une page de connexion personnalisée?

si vous avez configuré tous les trucs aussi jeter un oeil sur votre page de connexion, vous devriez avoir quelque chose comme

<form method="POST" action="j_security_check"> 
    <input type="submit"> 
    <!-- more code --> 
</form> 

essayer avec

<login-config>  
    <auth-method>BASIC</auth-method>  
    <realm-name>file</realm-name> 
</login-config> 
+0

Salut Luis, oui, c'est une page de connexion personnalisée. J'ai ajouté le code au message d'origine. – LDJ

+0

ressemble plus à la configuration glassfish que votre application web et puisque je n'ai jamais essayé celui-là je ne pourrais pas être d'une grande aide.Mais essayez changingin il vous connecter config à base BASIC fichier

0

Ouais. Il y a environ 2 ans, mais j'ai eu le même problème et fondé la solution. Bien que j'avais installé la bonne version de Netbeans (7.0) et la bonne version de jdk (1.6.0_45) pour suivre le livre, Netbeans est livré avec glassfish 3.1. Donc, ce que j'ai fait est de supprimer le serveur glassfish de Netbeans, désinstallé, et installé glashfish 3.0.1, alors maintenant mon exemple fonctionne parfaitement. Ne pas oublier d'exécuter Netbeans en tant qu'administrateur système.

Questions connexes