Как интегрировать реализацию аутентификации входа в систему OpenID (Java) с JBoss

Я реализовал один сервис, который выполняет операции, необходимые для аутентификации входа в систему OpenID с использованием библиотеки openid4java.

Некоторые приложения думают, как показано ниже

  1. Страница JSP для получения OpenID от пользователя
  2. Сервлет действий JSP-страницы
  3. Параметр Servlet fetch openid взаимодействует со службой, чтобы получить необходимую информацию для перенаправления пользователя к фактическому поставщику OpenID для аутентификации.
  4. URL-адрес возврата, предоставленный провайдеру OpenID, является другим сервлетом.
  5. этот сервлет получает информацию, требуемую из ответа, отправленного поставщиком открытого идентификатора, а затем взаимодействует со службой, чтобы проверить, прошел ли пользователь проверку подлинности поставщиком открытого идентификатора.
  6. Если пользователь прошел проверку подлинности, он перенаправляет пользователя на домашнюю страницу.

Если вы поняли мой подход к реализации, пожалуйста, ответьте на мои следующие вопросы, в противном случае, пожалуйста, дайте мне знать, чтобы я приложил больше усилий, чтобы сделать его понятным

Запросы Я использую сервер приложений 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. В противном случае вам просто нужно соединить две системы аутентификации.

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

Другие вопросы по тегам