2010-10-08 6 views
3

Je n'arrive pas à faire fonctionner l'authentification BASIC avec Glassfish. Je développe une application et je dois être invité à entrer un nom d'utilisateur et un mot de passe. J'ai obtenu l'application pour m'indiquer un mot de passe quand j'essaye d'accéder à l'application, mais après avoir entré les informations de connexion correctes, j'obtiens HTTP Status 403 - Access to the requested resource has been denied.Authentification de base dans Glassfish

Je suis allé dans la console d'administration Glassfish et j'ai créé quelques exemples d'utilisateurs dans le domaine file et activé le gestionnaire de sécurité.

Ensuite, dans mon dossier web.xml, j'ai ajouté les éléments suivants:

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Secure Application</web-resource-name> 
     <url-pattern>/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 

    <auth-constraint> 
     <role-name>User</role-name> 
    </auth-constraint> 
</security-constraint> 

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

<security-role> 
    <role-name>User</role-name> 
</security-role> 

Je ne suis pas sûr de ce qu'il faut faire ensuite. J'ai cherché plusieurs heures sans succès. L'authentification fonctionne parce que si j'entre des informations de connexion incorrectes, elle réapparaît, mais après m'être correctement authentifiée, j'obtiens le message d'accès refusé ci-dessus. Si cela aide, je cours Glassfish Open Source 3.0.1 et en utilisant Netbeans 6.9 pour le développement.

Répondre

6

Je ne sais pas si par défaut mais vous pouvez appliquer besoin de créer sun-web.xml et définir un mappage pour rôle « Utilisateur »:

<sun-web-app error-url=""> 
    ... 
    <security-role-mapping> 
    <role-name>User</role-name> 
    <group-name>filerealm-group-name</group-name> 
    </security-role-mapping> 
    ... 
</sun-web-app> 
1

Semble la documentation Glassfish à http://download.oracle.com/javaee/6/tutorial/doc/bnbxj.html est incorrect .

Si les noms de rôle utilisés dans une application ne sont pas les mêmes que les noms de groupe définis sur le serveur, utilisez le descripteur de déploiement d'exécution pour spécifier le mappage. Le exemple suivant montre comment faire la cartographie dans le fichier GlassFish-web.xml, qui est le fichier utilisé pour les applications web

Dans ce cas, vous devez créer un WEB-INF/glassfish- web-app.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> 
    <security-role-mapping> 
     <role-name>User</role-name> 
     <group-name>User</group-name> 
    </security-role-mapping> 
</glassfish-web-app> 
Questions connexes