Я проектирую безопасный вход в систему с помощью JSP.Я намерен использовать авторизацию форм для доступа к приложению в Websphere.Основная идея заключается в том, что когда внутренние, прошедшие проверку пользователи в домене получают доступ к странице, это происходит в обычном режиме.Однако, если внешние пользователи попытаются получить к нему доступ, он перенаправит их на страницу входа в систему, подключится к Active Directory и перенаправит их на страницу после правильной аутентификации.
Чтобы заставить его работать, я попыталсяизменить Web.xml, чтобы разрешить аутентификацию формы с помощью встроенного сервлета "j_security_check".После входа в систему он приветствует пользователя "Hello,!"с простой функцией <% request.getRemoteUser ()%> или <% request.getUserPrincipal (). getName ()%> .
На основе примеров, найденных здесь , я изменил свои данные Web.xml, как показано ниже:
<welcome-file-list>
<welcome-file>/protected/index.jsp</welcome-file>
</welcome-file-list>
<security-constraint>
<web-resource-collection>
<url-pattern>/protected/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>users</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>Administrator</description>
<role-name>admin</role-name>
</security-role>
<security-role>
<description>Users</description>
<role-name>users</role-name>
</security-role>
Под моим login.jsp у меня есть простая форма, которая выполняет вход в систему.
<form action="j_security_check" method="post">
Username: <input type="text" name="j_username">
Password: <input type="password" name="j_password">
<input type="submit" value="Login">
</form>
В моем index.jsp он приветствует пользователей простым запросом.
<body>
Hello, <% request.getRemoteUser(); %>
Hello, <% request.getUserPrincipal().getName(); %>
</body>
Здесь я сталкиваюсь с тремя проблемами.Важность оценивается как есть.
1) Ошибка 403 Перенаправление и регистрация на странице работает.Когда я пытаюсь получить доступ к index.jsp, я перенаправляюсь на login.jsp.Когда я ввожу неверную пару uid: pwd, меня приветствует error.jsp.Когда я вхожу в систему правильно, меня перенаправляют обратно на index.jsp, но меня приветствует ошибка 403. Веб-сайт требует от вас входа в систему .Я уверен, что вошел в систему, потому что ранее я не мог получить доступ к встроенной странице snoop , но после входа я могу.Я подозреваю, что это некоторые настройки в моем Web.xml
2) Получение идентификатора пользователя Даже после отключения всех средств защиты в Web.xml и доступа к index.jsp меня приветствует " Hello, null!"вместо" Здравствуйте, пользователь!".Коды, показанные в index.jsp, должны быть правильными, поскольку я скопировал их из примеров кодов snoop, найденных в Интернете. request.getRemoteUser () не работает на моем index.jsp, но работает на странице отслеживания.Должно быть что-то, что я не вызываю перед выполнением запроса?
3) Безопасность (пока не важно) Я думаю, что этот j_security_check находится под Spring Security.Я пытаюсь зашифровать как отправляющую и принимающую стороны, так и транспортный канал.Это связано с тем, что для аутентификации пароль не должен быть отправлен или сохранен в виде открытого текста.Я нашел некоторую информацию здесь , которая заставила меня попытаться / попытаться защитить этот процесс аутентификации.
Я был бы признателен за некоторые рекомендации и помощь в отношении трех главных проблем, с которыми я сталкиваюсь.Такое чувство, что я близок к завершению, но это так близко, но пока ...