Ошибка HTTP Status 403 от glassfish 3 при попытке перейти на страницу входа в систему - PullRequest
5 голосов
/ 20 февраля 2012

Я создал страницу входа в систему, используя хорошее руководство по Java EE6 и GlassFish3, используя netbeans.После развертывания проекта, когда я пытаюсь перейти на страницу входа, я получаю сообщение «HTTP Status 403 - Доступ к запрошенному ресурсу запрещен» с сервера GlassFish3.

Используемый URL: http://localhost:9999/simplewebapp/admin/admin.jsp В руководстве сказано, что меня автоматически перенаправят на созданную мной страницу входа.

Вместо этого я получаю вышеуказанную ошибку.Глядя на журнал glassfish3, я получаю эти две строки при вводе вышеупомянутого URL.

ИНФОРМАЦИЯ: Поставщик политики JACC: Сбой проверки разрешений: контекст ("simplewebapp / simplewebapp"), разрешение ("(javax.security.jacc.WebUserDataPermission /admin/login.jsp GET) ") ИНФОРМАЦИЯ: Поставщик политики JACC: Сбой проверки разрешения: контекст (" simplewebapp / simplewebapp "), разрешение (" (javax.security.jacc.WebUserDataPermission / admin / login)jsp GET: CONFIDENTIAL) ")

Некоторые дополнительные сведения:

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>

Чтоя здесь не так делаю?Спасибо.

Ответы [ 3 ]

3 голосов
/ 20 февраля 2012

Проблема решена. Мне пришлось добавить главные имена в glassfish-web.xml и имя-роли в web.xml.Правильные файлы:

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 голосов
/ 23 октября 2014

Для поддержания его «стандартным», я думаю, что это лучший вариант, потому что, если вы используете только веб-контейнер (например, tomcat), вам не придется настраивать ничего другого, кроме как области.В моем случае я использовал Eclipse, и мне пришлось удалить проект и снова развернуть его.

Большое спасибо.

0 голосов
/ 01 ноября 2013

Использование консоли администратора Glassfish для меня это сработало:

Выберите «server-config», указанный в разделе «Конфигурации», и перейдите на страницу «Безопасность».На этой странице вам нужно включить опцию «Принципал по умолчанию для сопоставления ролей».Преимущество включения этого параметра заключается в том, что он позволяет нам автоматически использовать роли, определенные для пользователей, без необходимости делать формальные объявления XML в файле конфигурации Glassfish для нашего проекта.

...