Войдите в систему, используя Java, где аутентификация сервера может быть sso или базовым контейнером веб-приложений. - PullRequest
1 голос
/ 08 марта 2010

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

Я хотел бы сделать HTTP-запрос и проверить ответ, чтобы увидеть, нужно ли мне выполнить какую-то аутентификацию, прежде чем я смогу получить ожидаемый ответ, вместо того, чтобы эффективно использовать какую-либо страницу входа. Сложность состоит в том, что сервер, который отвечает, не всегда будет одинаковым - пользователь Java-приложения указывает URL-адрес - и сервер может использовать какой-либо единый знак для аутентификации или веб-контейнера.

Я не знаю имен полей для полей имени пользователя и пароля или действия формы, есть ли простой способ получить такую ​​информацию из URL?

Я вижу, что у объекта URLConnection есть методы getPermission () , который имеет метод getActions () , но не подходит, что-нибудь может быть?

Я думаю, примерные вещи, которые я хочу определить:

  • Требуется ли для ответа аутентификация?
  • Если так; какой тип / какой сервлет? например j_security_check, josso единый вход, ...
  • А потом какой-нибудь способ аутентификации клиента
  • И, наконец, управление состоянием аутентифицированного пользователя для других запросов

Нужно ли мне знать атрибуты формы входа, прежде чем пытаться войти? И затем, является ли онолийный способ проверки разрешения запрашиваемому ресурсу на ручное управление файлами cookie?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 марта 2010

В конце концов, я отправил запрос на страницу, проверил форму входа (форма, которая имеет два видимых поля, одно из которых имеет тип пароля) и получила от нее имена полей формы.

Отправил значения обратно (вместе со скрытыми значениями и файлами cookie JSession) и сохранил файлы cookie, возвращенные сервером. Это работает! И затем, пока я отправляю с каждым запросом эти куки, я могу получить доступ к застрахованным страницам.

Спасибо.

Кроме того - почему мой рейтинг репутации примерно на 100 меньше, чем при последнем входе в систему, несмотря на то, что ни за что не проголосовали ??

0 голосов
/ 09 марта 2010

Звучит так, как будто вы пытаетесь создать SSO-процесс в клиенте. Я не до конца понимаю ваш дизайн, но когда я вижу клиентов, которые эффективно пропускают пользователя на сервер, они обычно просто устанавливают флажок «требует аутентификации», если пользователь нажимает «да», тогда он / она вводит имя пользователя / пароль поля. Вам нужно будет заранее знать, что ожидает сервер, чтобы вы могли кодировать в обязательных полях. Я не верю, что существует какой-либо универсальный метод аутентификации для неизвестного сервиса. Если бы они были, мы, наверное, давно бы решили SSO. Существует огромное количество методов аутентификации, многие из которых являются пользовательскими. Итак, как можно определить, какие поля и такой сервер требуется для аутентификации?

Я думаю, что если вы просите своих пользователей предоставить URL-адрес, вы по определению требуете, чтобы они кое-что узнали о том, как пройти аутентификацию на сервере. Можно предположить, скажем, если бы URL был svn: // или ldap: // или тому подобное ...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...