Как интегрировать реализацию аутентификации входа в систему OpenID (Java) с JBoss - PullRequest
3 голосов
/ 24 июля 2010

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

Некоторые считают, что поток приложения выглядит следующим образом:

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

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

Запросы, которые я использую JБосс 5 сервер приложений.В приведенном выше коде я просто получаю информацию, если пользователь аутентифицирован или нет, но мне нужно будет сообщить jboss о том, как он должен разрешить пользователю доступ к ограниченным ресурсам, то есть просматривать веб-страницы.

Обычно мы используем пользовательский класс модуля входа в систему, который наследует org.jboss.security.auth.spi.UsernamePasswordLoginModule для аутентификации на основе базы данных (вызывая сервисные методы для получения информации об аутентификации базы данных).Но в этом случае мне нужен сервлет, который действует как канал связи между сервисом, пользователем и поставщиком OpenID. Как мне интегрировать реализацию сервлета и модуля входа в систему обоих.

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

Подход к реализации, которому я следую, основан на статье http://www.theserverside.com/news/1364125/Using-OpenID

Пожалуйста, помогите мне Спасибо

1 Ответ

0 голосов
/ 05 августа 2010

В вашем сценарии чего-то не хватает: является ли openid единственным способом аутентификации или у пользователя также есть имя пользователя и пароль? В первом случае вы можете изменить свой пользовательский логин, чтобы расширить AbstractServerLoginModule и передать информацию об учетной записи openId. В противном случае вам просто нужно соединить две системы аутентификации.

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

...