Область входа Glassfish 3.1 не должна запрашивать учетные данные для определенного URL - PullRequest
1 голос
/ 16 марта 2012

У меня есть веб-приложение, настроенное для запроса имени пользователя и пароля в каждой точке входа. Все требует базовой аутентификации, за исключением одного URL-адреса showStatus, который предназначен для отображения статуса приложения. URL showStatus не требует аутентификации. Проблема в том, что даже при обращении к URL-адресу showStatus диалоговое окно пароля все равно отображается. Я могу нажать «Отмена» или «ОК» и по-прежнему получать доступ к странице, но мне хотелось бы узнать, как отключить диалоговое окно для showSession URL.

Вот содержимое web.xml:

<!-- constraint for restricted pages -->
<security-constraint>
    <display-name>restricted access</display-name>
    <web-resource-collection>
        <web-resource-name>Secure Pages</web-resource-name>
        <description/>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>USERS</role-name>
    </auth-constraint>
</security-constraint>

<!-- do not require authentication for showStatus URL -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>ShowStatus</web-resource-name>
        <url-pattern>/showStatus.action</url-pattern>
        <http-method>GET</http-method>
    </web-resource-collection>
</security-constraint>

<!-- need the login prompt to appear for everything but showStatus -->
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>MYREALM</realm-name>
</login-config>

<security-role>
    <role-name>USERS</role-name>
</security-role>

1 Ответ

0 голосов
/ 17 мая 2015

Скорее всего, у вас есть защищенные ресурсы на странице showStatus. Диалог пароля отображается, когда ваша страница пытается получить доступ к этим ресурсам, так как они также обслуживаются сервлетом Faces.

Вы можете проверить, какие ресурсы требуются, отслеживая сетевую активность в вашем браузере, используя firebug или некоторые встроенные инструменты при загрузке страницы showStatus. Вы бы увидели что-то вроде этого:

enter image description here

Все, что нужно, это добавить URL этого ресурса к <web-resource-collection>, которые не требуют аутентификации. Или же вы можете предоставить открытый доступ ко всем ресурсам, добавив следующий шаблон:

<url-pattern>/faces/javax.faces.resource/*</url-pattern>
...