У нас есть пользовательский javax.security.auth.spi.LoginModule
, используемый для веб-сервисов, а также для некоторых веб-приложений на Weblogic 11g.Доступ к HttpServletRequest в пользовательском javax.security.auth.spi.LoginModule
Целью является запись информации о логинах при переходе через LoginModule
, особенно сбойные логины. Часть желаемой информации - это IP-адрес, с которого пришел запрос аутентификации. Проблема, которую я нахожу, я не знаю, как получить эту информацию в LoginModule
.
В настоящее время LoginModule
просто подтверждает, что указанное имя пользователя и пароль соответствуют значениям, хранящимся в базе данных JDBC. Если аутентификация завершается с ошибкой, она увеличивает счетчик для отслеживания количества неудачных логинов для этого пользователя, если они существуют как действительный пользователь. Имя пользователя и пароль передаются, если я правильно его понимаю, через CallbackHandler
, который указан во время метода initialize
. Непонятно, как эти значения сначала попадают в CallbackHandler
и как указать другой динамический контент, такой как исходящий IP-адрес запроса. Через отладку я обнаружил, что CallbackHandler
действительно имеет запрос в следующей цепочке: handler.ch.delegate.contextHandler.requestElement
, но я не вижу, как получить доступ к любому из них из интерфейса CallbackHandler
.
Я исследовал некоторые из AuditProviders и т. П., Нахожу one example that logged the HTTP method, поэтому я бы предположил, что получение дополнительной информации из HTTP-запроса было бы возможно, я еще не обнаружил его. Однако мне нужно будет изменить наш пользовательский поставщик безопасности, чтобы создать аудит AuditEvent
. Часть этого будет предоставлять запрос, который возвращает нас к первоначальной проблеме доступа к HttpServletRequest
изнутри LoginModule
.
Я пробовал реализовать ServletAuthenticationFilter
как часть нашего Провайдера безопасности, но, похоже, это вызов до аутентификации, что не помогает нам в сборе неудачных попыток входа в систему.
Я относительно новичок в разработке/модификации поставщиков безопасности, поэтому основные примеры/объяснения являются лучшими.
Спасибо!
Как работает ваш пользовательский LoginModul? – Horcrux7