2012-02-19 5 views
5

Ho creato una pagina di accesso utilizzando una buona guida che ho trovato su Java EE6 e GlassFish3 utilizzando netbeans. Dopo aver distribuito il progetto quando provo a raggiungere la pagina di accesso, viene visualizzato "Stato HTTP 403 - L'accesso alla risorsa richiesta è stato negato" dal server GlassFish3.Stato HTTP Errore 403 da glassfish 3 quando si tenta di raggiungere una pagina di login implementata

L'url che sto usando è: http://localhost:9999/simplewebapp/admin/admin.jsp La guida dice che dovrei essere automaticamente reindirizzato alla pagina di accesso che ho creato.

Invece sto ricevendo l'errore sopra. Guardando il registro glassfish3 sto ricevendo queste due righe quando inserisco l'url sopra.

INFORMAZIONI: JACC Policy Provider: Impossibile Permesso Check: contesto ("simplewebapp/simplewebapp "), l'autorizzazione ("(javax.security.jacc.WebUserDataPermission /admin/login.jsp GET)") INFORMAZIONI: politica JACC Provider : non riuscito permesso check: contesto ("simplewebapp/simplewebapp "), l'autorizzazione ("(javax.security.jacc.WebUserDataPermission /admin/login.jsp GET: CONFIDENZIALE)")

Alcuni dettagli:

web .xml

<?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>admin</description> 
     </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>Users</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>appadmin</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> 

Cosa sto facendo male qui? Grazie.

+0

Prova a trovare login.jsp nella cartella di amministrazione? – skiabox

+0

Il mio file login.jsp si trova nella directory principale dell'applicazione proprio come il codice libro che ho scaricato. – skiabox

risposta

3

Problema risolto. Ho dovuto aggiungere i nomi principali in glassfish-web.xml e un nome ruolo in web.xml. file corretti:

web-xml

<?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>admin</description> 
      <role-name>AdminRole</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>AdminRole</role-name> 
    </security-role> 
    <security-role> 
     <description>Users</description> 
     <role-name>UserRole</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>AdminRole</role-name> 
    <principal-name>admin</principal-name> 
    <group-name>appadmin</group-name> 
    </security-role-mapping> 
    <security-role-mapping> 
    <role-name>UserRole</role-name> 
    <principal-name>user</principal-name> 
    <group-name>appuser</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> 
+0

Nota anche il bug del glassfish: http://java.net/jira/browse/GLASSFISH-19064. Vedi: http://stackoverflow.com/questions/12268255 – igr

0

Utilizzando GlassFish Admin Console questo ha funzionato per me:

Seleziona 'del server-config' quotate sotto Configurazioni e accedere alla pagina Sicurezza. In quella pagina è necessario abilitare l'opzione 'Principal default to Role Mapping'. Il vantaggio di abilitare questa opzione è che ci consente di utilizzare i ruoli definiti per gli utenti a breve automaticamente senza richiedendoci di fare dichiarazioni XML formali in un file di configurazione glassfish per il nostro progetto.

0

Per mantenerlo "standard", penso che questa sia l'opzione migliore, perché se si utilizza solo un contenitore Web (ad esempio tomcat), non si dovrà configurare nient'altro che solo un reame. Nel mio caso, stavo usando Eclipse e dovevo annullare la distribuzione del progetto e ridistribuirlo.

Grazie mille.

Problemi correlati