Страница ошибки аутентификации http-basic java ee - PullRequest
2 голосов
/ 29 марта 2012

Использование аутентификации на основе форм в Java EE для защиты веб-приложения, мы можем указать логин и и страницу ошибки html. http://docs.oracle.com/javaee/5/tutorial/doc/bncbe.html

Пример:

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>file</realm-name>
    <form-login-config>
        <form-login-page>/logon.jsp</form-login-page>
        <form-error-page>/logonError.jsp</form-error-page>
    </form-login-config>
</login-config>

Используя базовую аутентификацию HTTP, мы не можем указать страницу входа потому что клиентский веб-браузер отвечает за получение логина / пароля пользователя (обычно с использованием всплывающего окна).

<login-config>
    <auth-method>BASIC</auth-method>
</login-config>

Однако нам все равно нужно указать страницу с ошибкой. Это возможно? как? то есть при использовании аутентификации HTTP-Basic (и Java EE) нам нужно будет отобразить страницу с конкретной ошибкой, если предоставленные логин / pwd неверны (как в аутентификации на основе форм).

Ответы [ 3 ]

4 голосов
/ 29 марта 2012

Нет, в базовой аутентификации вы не можете настроить loginpage/errorpage. Вот как работает другая аутентификация:

ФОРМА Логин:

  • Клиент делает запрос на защищенную страницу /application/securedpag
  • Сервер отправляет 200 Status code along with login.jsp настроено в login-config
  • Клиент заполняет j_username и j_password и отправляет j_security_check сервлет
  • Сервлет j_security_check вызывается на стороне сервера, который проверяет j_username и j_password. If authenication is successful, the request is forwarded/redirected to the secured page. If the authentication fails, the error page is sent (который настраивается в login-config).

бейсик Логин:

  • Клиент делает запрос на защищенную страницу /application/securedpage
  • Сервер отправки 401 status code с просьбой клиента отправить Authorization header with value containing Base64 encoded username and passowrd.
  • В браузере появится всплывающее окно с запросом имени пользователя и пароля.
  • Браузер снова сделает запрос на защищенную страницу /application/securedpage вместе с Authorization header with value containing Base64 encoded username and passowrd
  • If authenication is successful, the request is forwarded/redirected to the secured page. If the authentication fails, again the challange i.e, 401 код статуса` отправляется в браузер.
  • Браузер снова покажет всплывающее окно с запросом имени пользователя и пароля.

    ОСНОВНОЙ поток входа в систему ясно показывает, что нет места, куда отправляется тело ответа. Сервер отправляет только 401 status code для запроса учетных данных как в первый раз, так и в случае сбоя аутентификации.

1 голос
/ 30 марта 2012

Страница ошибки базовой аутентификации HTTP - это ошибка HTTP 401, по умолчанию используется собственная страница ошибки HTTP 401 сервлетконтейнера.Просто укажите пользовательскую страницу ошибки HTTP 401 в web.xml.

<error-page>
    <error-code>401</error-code>
    <location>/loginError.jsp</location>
</error-page>
0 голосов
/ 10 мая 2012

Мне показались очень полезными два примера: https://svn.java.net/svn/javaeetutorial~svn/trunk/examples/security/hello2_basicauth/ и https://svn.java.net/svn/javaeetutorial~svn/trunk/examples/security/hello1_formauth/. (Вы можете проверить все примеры Java EE 6 с помощью . Где я могу скачать учебные примеры Java EE 6? ) Они демонстрируют два подхода, о которых вы спрашиваете. Совет: для новичка в сфере безопасности, такого как я, я обнаружил, что https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/ чрезвычайно полезен для того, чтобы понюхать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...