Я новичок в веб-программировании, пришёл из среды разработки видеоигр (c ++) и действительно начинаю ощущать информационную перегрузку. Существует так много конкурирующих библиотек, которые выбирают то, что им не нравится в какой-то другой библиотеке, и создают совершенно новый способ сделать то же самое! Я уверен, что для этого есть веские причины, и я не хочу жаловаться, поэтому я объясню свою проблему.
Чтобы облегчить свое путешествие, я решил начать изучать Google App Engine + GWT + Java. Мне это нравится, потому что это распределенная серверная архитектура, и я выбрал Java из-за своего опыта работы с C ++.
Для начала я написал небольшое приложение, похожее на Twitter, потому что оно тестирует различные аспекты веб-разработки, а именно: REST, анализ / создание JSON, AJAX-связи и генерацию HTML. У меня не заняло много времени создание небольшого сайта, который позволял бы пользователю вводить свое имя и пароль на странице в браузере, отправлять данные в мое приложение, я входил от их имени, брал их список друзей и отправлял сообщения он возвращается к клиенту как JSON, где я его анализирую и отображаю.
Довольно простые вещи.
Итак, следующим шагом было то, что мне не понравилось посылать пароль, который пользователь ввел по сети, в виде простого текста (очевидно). Это заставило меня задуматься о всей сантехнике, которая мне понадобится:
- Аутентификация пользователей по моей собственной базе данных, а не по Google. (Логин / Забыли пароль / Выйти)
- Вход / выход (отслеживание) сеанса (вход / выход из системы).
- Хранить пользовательские данные в базе данных моего приложения Google.
Все довольно стандартные вещи, которые были вокруг навсегда. Ну, я начал искать библиотеку аутентификации Java, и там были такие большие монолитные библиотеки с огромными кривыми обучения, а некоторые из них уже устарели или больше не в фаворитах ... Я снова и снова чувствую себя начинающим программистом! Я просто хочу иметь страницу входа! :)
Итак, я начал читать о том, как работает аутентификация, и есть огромное количество, которое нужно принять. Очевидно, что люди довольно часто (небезопасно) бросают свои собственные. Я бы предпочел принять решение, которое существует и является надежным.
Таким образом, возникает вопрос, что люди делают с этим? Twitter поддерживает как HTTP, так и HTTPS, но по умолчанию использует HTTP для своего REST API. Означает ли это, что пароли людей разлетаются без защиты, готовые к перехвату взломами типа «человек посередине»?
Я также посмотрел на OAuth, который выглядит превосходно, но в нем нет аргумента просто для старого доброго «я не хочу знать или беспокоиться о том, что такое OpenID». Нетехнические люди, которым я показывал OpenID, похожи на «что? Я просто хочу ввести свое имя пользователя / пароль».
Как примечание: кому-нибудь повезло с Spring.Security в Google App Engine?
Во всяком случае, я ругаю. Я просто хочу знать, что делают люди (не в Python, Rails и т. Д., А в старой доброй Java). Я хотел бы иметь страницу входа в систему, как Digg, даже с возможностью один день для OpenID:)
Ура,
Шейн