Базовая аутентификация в Glassfish - PullRequest
3 голосов
/ 08 октября 2010

У меня проблемы с настройкой BASIC-аутентификации для работы с Glassfish.Я разрабатываю приложение, и мне нужно ввести имя пользователя и пароль.Я получил приложение, запрашивающее у меня пароль, когда я пытаюсь получить доступ к приложению, но после ввода правильной информации для входа я получаю HTTP Status 403 - Access to the requested resource has been denied.

Я зашел в консоль администратора Glassfish и создалнесколько примеров пользователей в области file и включили диспетчер безопасности.

Далее, в моем файле web.xml я добавил следующее:

<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>

Я не совсем уверен, что делать дальше.Я искал несколько часов без удачи.Аутентификация работает, потому что, если я ввожу неверную информацию для входа в систему, она снова запрашивает, но после успешной аутентификации я получаю сообщение об отказе в доступе, показанное выше.

Если это помогает, я запускаю Glassfish Open Source 3.0.1 и используюNetBeans 6,9 для разработки.

Ответы [ 2 ]

6 голосов
/ 11 октября 2010

Я не уверен, применяются ли значения по умолчанию, но вам может потребоваться создать sun-web.xml и установить сопоставление для роли "Пользователь":

<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 голос
/ 01 июля 2011

Кажется, что документация Glassfish на http://download.oracle.com/javaee/6/tutorial/doc/bnbxj.html неверна.

Если имена ролей используются в приложение не совпадает с имена групп, определенные на сервере, используйте дескриптор развертывания во время выполнения укажите отображение. Следующие Пример демонстрирует, как это сделать отображение в файле glassfish-web.xml, какой файл используется для веба приложения

В этом случае вам нужно создать 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>
...