Вход в веб-сайт в Java + Google App Engine

Я новичок в веб-программировании, исходя из фона разработки видеоигр (c ++) и действительно чувствую информационную перегрузку. Существует так много конкурирующих библиотек, которые выбирают то, что им не нравится в какой-либо другой библиотеке, и создают совершенно новый способ сделать то же самое! Я уверен, что есть веские причины для этого, и я не хочу жаловаться, поэтому я объясню свою проблему.

Чтобы облегчить мое путешествие, я решил начать изучение Google App Engine + GWT + Java. Мне нравится, потому что это распределенная серверная архитектура из коробки, и я выбрал Java из-за моего фона на C ++.

Начнем с того, что я написал небольшое приложение, подобное Twitter, потому что он тестирует различные аспекты веб-разработки, а именно: REST, JSON parsing / creation, AJAX comms и HTML-генерация. Мне не потребовалось слишком много времени, чтобы создать небольшой сайт, который позволяет пользователю вводить свое имя и пароль на страницу в браузере, отправлять данные в мое приложение, я зависеть от их имени, захватывать список своих друзей и испускать он возвращается к клиенту как JSON, где я разбираю его и показываю.

Довольно простой материал.

Итак, следующим шагом было то, что мне не нравилось отправлять пароль, введенный пользователем через сеть, как обычный текст (очевидно). Это заставило меня задуматься обо всех сантехниках, которые мне понадобятся:

  1. Аутентифицируйте пользователей от моей собственной базы данных, а не от Google. (Вход / Забыли пароль / Выход)
  2. Ввод / выход (отслеживание) сеанса (вход в систему / выход из системы).
  3. Храните данные пользователя в базе данных приложения Google.

Все довольно стандартные вещи, которые были вокруг навсегда. Хорошо, я начал оглядываться на библиотеку аутентификации Java, и были такие большие монолитные библиотеки с огромными кривыми обучения, а некоторые старые или больше не нравились ... Я снова чувствую себя как начинающий программист! Я просто хочу иметь страницу входа! :)

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

Так возникает вопрос, что люди делают по этому поводу? Twitter поддерживает как HTTP, так и HTTPS, но по умолчанию использует HTTP для своего REST API, означает ли это, что пароли людей летают без защиты, готовы быть перехвачены взломами «человек на середине»?

Я также посмотрел на OAuth, который выглядит превосходно, но у него нет случая только для хорошего старого «Я не хочу знать или заботиться о том, что OpenID». Нетехнические люди, которых я показал OpenID, похожи на «что? Я просто хочу ввести свое имя пользователя / пароль».

Как примечание, кому-нибудь повезло с Spring.Security в Google App Engine?

Во всяком случае, я разглагольствовал. Я просто хочу знать, что делают люди (не в Python, Rails и т. Д., А в старой старой Java). Мне бы очень хотелось иметь страницу входа в систему, такую ??как Digg, и даже один вариант для OpenID :)

Приветствия, Шейн

java,google-app-engine,login,

22

Ответов: 4


12 принят

Я не могу говорить с Spring Security вместе с Google App Engine, но могу сказать несколько вещей об этом, которые могут быть полезны.

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

Во-вторых, библиотека очень настраивается. Если вы выполните поиск в руководстве, вы получите представление о том, что вы можете сделать, и у меня не было проблем с переделкой областей, которые мне нужно было изменить для моего проекта. У меня есть уверенность, что вы сможете работать вместе с Spring Security и Google App Engine вместе. В общем, я был доволен предвидением источника Spring и способностью взаимодействовать с другими библиотеками.

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

Желаю тебе удачи!


4

Я просто наткнулся на ваш пост. Вы казались (прошедшее время, так как это было давно), чтобы смутить использование HTTP и HTTPS и аутентификация. Если вы используете HTTP, ваш пароль не будет отображаться в виде обычного текста. Как правило, информация для входа отправляется через HTTPS. К этому времени был создан сеанс, который отслеживается с помощью большого произвольно сгенерированного идентификатора в cookie. Пользователь аутентифицируется на сервере, и их идентификатор хранится в сеансе (хранится на сервере), чтобы отметить, что они вошли в систему.

С этого момента пользователь отслеживает сеанс. Да, возможно, что человек-в-середине может захватить куки-файл и принять вашу личность. Это относится к 100% сайтов, которые работают через HTTP, но это явно не проблема, или вы узнаете больше об этом. Для HTTPS cookie сеанса может быть помечен как безопасный, что означает, что он будет только отправляться через HTTPS из браузера. Раньше я обнаружил, что браузеры ведут себя по-разному, иногда используют одно и то же значение для безопасного и незащищенного файла cookie с одинаковым именем (что является немой идеей). Лучше всего использовать отдельный безопасный файл cookie, чтобы гарантировать, что пользователь выполнил вход для защищенных функций на вашем веб-сайте.

Я согласен с вами в том, что структура JAAS просто ужасна. Должно быть, это было написано кучей ненормальных сумасшедших без здравого смысла.

Что касается использования Google App Engine - они позаботятся обо всех аутентификации для вас. Похоже, у вас нет выбора, кроме как использовать учетные записи Google, что является позором. Также жаль, что они настаивают на том, чтобы вы перенаправлялись на свою страницу входа, потому что это нарушает работу GWT. В настоящее время я занимаюсь управлением своими собственными учетными записями, потому что я не хочу, чтобы Google владел ими, и я не хочу, чтобы этот разрозненный опыт был на моем сайте.

Тем не менее, невозможно отслеживать пользователя без сеанса (сеансы могут поддерживаться в GAE, но настоятельно не рекомендуется повышать масштабируемость в GAE). Без сеанса мне буквально нужно отправить пароль и аутентифицировать пользователя с каждым запросом RPC. Google тянет некоторые трюки, чтобы заставить getUserPrincipal () работать в своих кластерах серверов - и, похоже, вы получаете эту магию только в том случае, если используете Google Accounts.

Может быть, мне что-то не хватает, но документы Google просто просматривают эту зияющую дыру :(


1

Эй, если вы хотите работать с java, вы можете посмотреть в WICKET ... это довольно аккуратная java-framework, которая предлагает много. он ориентирован на компоненты и через примеры довольно легко понять (см. пример входа на странице расширенного примера ... Я быстро его запускал). он также работает с другими js-framework, но также предлагает свою собственную реализацию ajax. у него также есть отличный список рассылки!


0

Я пытаюсь сделать то же самое с помощью элемента ограничения безопасности сервлета . В моем приложении основной / дайджест auth под https прекрасен.

На следующий день я также попытаюсь реализовать другое приложение с использованием рестарта и / или JAX-RS. Оба фреймворка обеспечивают защитные крючки.

Ввод / выход (отслеживание) сеанса (вход в систему / выход из системы).

это может быть легко реализовано с использованием фильтра сервлетов (опять же, полностью поддерживаемого GAE)

Как примечание, кому-нибудь повезло с Spring.Security в Google App Engine?

поддерживается весна

Java, Google-приложение-двигатель, Логин,
Похожие вопросы