Я новичок в веб-программировании, исходя из фона разработки видеоигр (С++) и действительно чувствую информационную перегрузку. Существует так много конкурирующих библиотек, которые выбирают то, что им не нравится в какой-либо другой библиотеке, и создают совершенно новый способ сделать то же самое! Я уверен, что есть веские причины для этого, и я не хочу жаловаться, поэтому я объясню свою проблему.
Чтобы облегчить мое путешествие, я решил начать изучение Google App Engine + GWT + Java. Мне нравится, потому что это распределенная серверная архитектура из коробки, и я выбрал Java из-за моего фона на С++.
Начнем с того, что я написал небольшое приложение для Twitter, потому что он тестирует различные аспекты веб-разработки, а именно: REST, JSON parsing/creation, AJAX comms и HTML-генерация. Мне не потребовалось слишком много времени, чтобы создать небольшой сайт, который позволяет пользователю вводить свое имя и пароль на страницу в браузере, отправлять данные в мое приложение, я зависеть от их имени, захватывать список своих друзей и испускать он возвращается к клиенту как JSON, где я его анализирую и показываю.
Довольно простой материал.
Итак, следующим шагом было то, что мне не нравилось отправлять пароль, введенный пользователем через сеть, как обычный текст (очевидно). Это заставило меня задуматься обо всех сантехниках, которые мне понадобятся:
- Аутентифицировать пользователей от моей собственной базы данных, а не от Google. (Вход/Забыли пароль/Выход)
- Ввод/выход (отслеживание) сеанса (вход в систему/выход из системы).
- Сохранение пользовательских данных в базе данных приложений Google.
Все довольно стандартные вещи, которые были вокруг навсегда. Хорошо, я начал оглядываться на библиотеку аутентификации Java, и были такие большие монолитные библиотеки с огромными кривыми обучения, а некоторые старые или больше не нравились... Я снова чувствую себя как начинающий программист! Я просто хочу иметь страницу входа!:)
Итак, я начал читать о том, как работает сантехника аутентификации, и есть огромная сумма. Очевидно, это довольно распространено для людей (небезопасно) сворачивать свои собственные. Я предпочел бы принять решение, которое существует и твердое.
Итак, вопрос становится, что люди делают по этому поводу? Twitter поддерживает как HTTP, так и HTTPS, но по умолчанию используется HTTP для его REST API. Значит ли это, что люди пароли летают без защиты, готовы к перехвату с помощью man-on-the-middle hacks?
Я также посмотрел на OAuth, который выглядит превосходно, но у него нет случая только для хорошего старого "Я не хочу знать или заботиться о том, что OpenID". Нетехнические люди, которых я показал OpenID, похожи на "wha? Я просто хочу указать свое имя пользователя/пароль".
Как примечание, кому-нибудь повезло с Spring. Безопасность в Google App Engine?
Во всяком случае, я разглагольствовал. Я просто хочу знать, что делают люди (не в Python, Rails и т.д., А в старой старой Java). Мне бы очень хотелось иметь страницу входа в систему, такую как Digg, и даже один вариант для OpenID:)
Cheers, Шейн