Как программно проверить учетные данные для входа в веб-форму?

#java #javascript #gwt #credentials

#java #javascript #gwt #учетные данные

Вопрос:

Я создаю приложение, позволяющее пользователям экспортировать данные из университетской системы. В настоящее время они могут войти в систему и просмотреть данные в HTML, но я хотел бы позволить людям загружать их в формате CSV.

У меня есть приложение, в котором пользователи вводят свое имя пользователя и пароль. Я хотел бы войти в университетскую систему и очистить результирующую страницу в формате HTML. Как я могу это сделать?

Я создаю приложение GWT. Я мог бы сделать это либо на Java-transliterated-JS на клиенте, либо на Java на сервере.

Обновление: Selenium может быть хорошим, но это выглядит излишеством.

Ответ №1:

Вам придется делать это с сервера, если домены не совпадают. Вам нужно будет определить, как выглядит транзакция POST, используемая другим сервером для шага входа в систему — имена параметров и т.д. Затем вы должны выполнить эту операцию и делать все, что захотите, с тем, что возвращается. Если вам нужно просмотреть несколько страниц, вам также необходимо сохранить соответствующий файл cookie сеанса, чтобы сервер знал, что вы все еще входите в систему при последующих HTTP-запросах.

Ответ №2:

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

Во-первых, это должно быть сделано на стороне сервера из-за ограничений на клиентские сценарии из-за той же политики происхождения.

Типичный способ обработки упомянутой вами «очистки экрана» заключается в обработке веб-страницы так, как если бы это была служба XML. Сначала изучите исходный код страницы, затем, используя интернет / HTTP-стек, создайте СООБЩЕНИЕ по правильному URL и прочитайте ответ, используя стандартную библиотеку XML. Потребуется некоторая изобретательность, чтобы придумать хороший способ копаться в XML, чтобы найти нужную вам часть, которая будет максимально изолирована от изменений на странице. Имейте в виду, что ваша система может выйти из строя в любой момент, когда владельцы сайта изменят свою страницу.

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

Кроме того, вам, вероятно, также придется обрабатывать файлы cookie, поскольку они обычно являются неотъемлемой частью аутентификации веб-сайта и управления сеансом (хотя вам может повезти, что сеанс не имеет значения между начальной публикацией и первым ответом).

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

Существуют и другие потенциальные препятствия, такие как проверка сайта на предмет того, что реферер является их собственным сайтом, возможное использование SSL (HTTPS) и так далее.

Ответ №3:

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

Смотрите http://en.wikipedia.org/wiki/Same_origin_policy

Ответ №4:

Я не слишком уверен насчет GWT, но в целом, вы бы взяли данные формы, отправленные пользователем, сверили их с базой данных имени пользователя и хэшированных паролей. Если база данных проверяется, установите файл cookie сеанса, в котором сообщается, что пользователь вошел в систему.

На своих страницах проверьте, указывает ли сессионный файл cookie, что пользователь вошел в систему. Если нет, перенаправьте на страницу входа, в противном случае разрешите им просматривать pagfe.

Комментарии:

1. Это не моя база данных — я пытаюсь позволить пользователям извлекать данные из университетской системы, и я всего лишь сторонний пользователь.

2. Предоставляет ли университет систему аутентификации? OAuth или иначе?