Как интегрировать реализацию аутентификации входа в систему OpenID (Java) с JBoss
Я реализовал один сервис, который выполняет операции, необходимые для аутентификации входа в систему OpenID с использованием библиотеки openid4java.
Некоторые приложения думают, как показано ниже
- Страница JSP для получения OpenID от пользователя
- Сервлет действий JSP-страницы
- Параметр Servlet fetch openid взаимодействует со службой, чтобы получить необходимую информацию для перенаправления пользователя к фактическому поставщику OpenID для аутентификации.
- URL-адрес возврата, предоставленный провайдеру OpenID, является другим сервлетом.
- этот сервлет получает информацию, требуемую из ответа, отправленного поставщиком открытого идентификатора, а затем взаимодействует со службой, чтобы проверить, прошел ли пользователь проверку подлинности поставщиком открытого идентификатора.
- Если пользователь прошел проверку подлинности, он перенаправляет пользователя на домашнюю страницу.
Если вы поняли мой подход к реализации, пожалуйста, ответьте на мои следующие вопросы, в противном случае, пожалуйста, дайте мне знать, чтобы я приложил больше усилий, чтобы сделать его понятным
Запросы Я использую сервер приложений JBoss 5. В приведенном выше коде я просто получаю информацию, если пользователь аутентифицирован или нет, но мне нужно будет сообщить jboss о том, как он должен разрешить пользователю доступ к ограниченным ресурсам, то есть просматривать веб-страницы.
Обычно мы используем класс модуля Custom Login, который наследует org.jboss.security.auth.spi.UsernamePasswordLoginModule
для аутентификации на основе базы данных (вызов сервисных методов для получения информации об аутентификации базы данных). Но в этом случае мне нужен сервлет, который действует как канал связи между сервисом, пользователем и поставщиком OpenID. Так как я должен интегрировать реализацию сервлета и модуля входа в систему.
Еще одна проблема, с которой я могу столкнуться, заключается в том, что я использую сеанс между двумя реализованными сервлетами для хранения и извлечения DiscoveryInformation
объект. Я думаю, что сессия не будет доступна, пока пользователь не вошел в систему.
Подход к реализации, которому я следую, основан на статье http://www.theserverside.com/news/1364125/Using-OpenID
Пожалуйста, помогите мне Спасибо
1 ответ
В вашем сценарии чего-то не хватает: является ли openid единственным способом аутентификации или у пользователя также есть имя пользователя и пароль? в первом случае вы можете реорганизовать свой пользовательский логин, чтобы расширить AbstractServerLoginModule и передать информацию об учетной записи openId. В противном случае вам просто нужно соединить две системы аутентификации.
Для проблемы сеанса все должно быть в порядке, так как сеанс начинается, когда браузер впервые подключается к серверу и продолжает работать, пока он не работает из-за неактивности или программно сброшен.