Пользовательская аутентификация в Google App Engine (Python) - PullRequest
37 голосов
/ 20 июня 2009

Кто-нибудь знает или знает где-нибудь, где я могу узнать, как создать собственный процесс аутентификации, используя python и google app engine?

Я не хочу использовать аккаунты Google для аутентификации и хочу иметь возможность создавать своих собственных пользователей.

Если не специально для движка приложений Google, есть какой-нибудь ресурс о том, как реализовать аутентификацию с использованием python и django?

Ответы [ 10 ]

20 голосов
/ 20 июня 2009

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

В http://gaeutilities.appspot.com/

имеется утилита сеанса

http://gaeutilities.appspot.com/session

http://code.google.com/p/gaeutilities/

Или

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

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

Если вы хотите авторизовать пользователей для внешнего доступа к данным, вы можете обратиться к OAuth для доступа к приложениям.

Если вы просто хотите хранить данные под идентификатором, и это более ориентировано на потребителя, возможно, просто используйте openid, такой как stackoverflow, и затем присоедините данные профиля к этому идентификатору, например, к профилям django (http://code.google.com/p/openid-selector/).

django 1.0 только что вышла сегодня на GAE, но я думаю, что те же проблемы существуют, без сессий, вам действительно нужно создать свои собственные, которые хранят данные сессий.

10 голосов
/ 25 апреля 2012

Это довольно готовое решение, которое работает довольно хорошо: http://code.scotchmedia.com/engineauth/docs/index.html

Он имеет встроенную поддержку Facebook, Google+, Twitter, LinkedIn, GitHub и OpenId (через Google App Engine).

Вы просто должны перенаправить пользователя на /auth/facebook или /auth/google и т. Д. (Этот URL настраивается).

Он также реализует два класса: User и UserProfile, каждый User является уникальной учетной записью в вашем приложении и может относиться к одной или нескольким UserProfiles - какая из них является стратегией входа, уникальной User должен войти в ваше приложение (если неясно, это потому, что мой английский очень плохой, документы объясняют лучше).

P.S .: Документация не очень полная, но код довольно простой, короткий и не требует пояснений. Также здесь обсуждается , в котором автор дает различные ответы на вопросы запутавшихся и начинающих пользователей.

8 голосов
/ 08 февраля 2012

Я видел, что это появляется в Google, каждый раз, когда вы ищете "Пользовательский вход в систему приложений", так Я решил дать ответ, который служил мне. Вот пример приложения https://github.com/fredrikbonander/Webapp2-Sample-Applications

Используется

  1. webapp2 (уже в GAE 1.6.2)
  2. Jinja2 (уже в GAE 1.6.2)

Webapp2, кажется, является лучшим выбором для GAE (построен на основе веб-приложения, следовательно, на будущее), так что аутентификация с использованием инфраструктуры, изначально поддерживаемой GAE, является хорошей идеей. Здесь очень много другие фреймворки, но много взлома должно быть сделано со стороны пользователей, чтобы заставить их работать. Для людей, которые хотят создать «стабильный» сайт, такая хакерская работа крайне нежелательна.

Я также понимаю, что поддержка GAE для SQL уже есть, и django будет поддерживаться изначально. Мы все знаем, что django имеет встроенную систему аутентификации пользователей. Хотя, думаю, особенно в облачном мире NoSQL - это будущее. Я уверен, что в будущем в NoSQL будет такая же фреймворк, как и в django. Но это я, ваше требование может потребовать чего-то другого.

8 голосов
/ 20 июня 2009

Потребитель OpenID (часть превосходного проекта с открытым исходным кодом "Примеры движков приложений") в настоящее время работает (несмотря на предупреждения в его README, который является старым) и позволит вам использовать OpenID для ваших пользователей. логины.

Django's auth также можно использовать, например, через. этот проект (по крайней мере, часть users, необязательно groups и permissions, хотя они могут заставить их работать в любое время).

7 голосов
/ 19 марта 2013

Вот отличное и относительно недавнее (январь 2013 г.) сообщение в блоге под названием Аутентификация пользователя с помощью webapp2 в Google App Engine и связанное с ним GitHub repo: abahgat/webapp2-user-accounts.

4 голосов
/ 19 августа 2009

Посмотрите app-engine-patch для Django (ваш предпочтительный фреймворк, который я предполагаю из вашего вопроса). Предлагает аутентификацию на gae.

Или посмотрите на web2py . Это основанная на Python инфраструктура, которая работает с GAE и реляционными базами данных. Это встроенный объект Auth для пользователей, групп и прав доступа.

Тем не менее, он не дает необузданного доступа к BigTable, вместо этого предлагая поднабор реляционных функций (например, BigTable не поддерживает объединения, а web2py [пока] не поддерживает модели BigTable).

Поддержка BigTable обсуждается сообществами Web2py и Django.

2 голосов
/ 03 июля 2012

Некоторое время я гуглил для пользовательской системы аутентификации для движка приложения. В конце концов я остановился на фляге на движке приложения. Я использовал этот шаблон для запуска фляги на движке приложения https://github.com/kamalgill/flask-appengine-template/ и это расширение аутентификации фляги http://pypi.python.org/pypi/Flask-Auth/, которое поставляется с поддержкой механизма приложений Google Plug and Play. Я думаю, что у flask также есть очень хорошая библиотека oAuth, поэтому в конечном итоге добавить логины в Facebook и Twitter будет легко

1 голос
/ 23 августа 2012

Другим вариантом является Модуль мензурки . Шифрование AES для сеансов на стороне клиента хорошо.

1 голос
/ 28 июля 2012

Посмотрите на этот проект, над которым я работаю с coto: https://github.com/coto/gae-boilerplate Он включает в себя полнофункциональную систему пользовательской аутентификации и многое другое.

1 голос
/ 25 апреля 2012

В дополнение ко всем другим замечательным ответам, я бы также добавил, что Facebook , Twitter и github все предлагают механизмы OAuth, которые вы можете использовать как поддержка аутентификации под ключ для вашего приложения.

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