Я немного сбит с толку насчет OpenID OAuth.
(по OAuth - я имею в виду OAuth 2.0 здесь и позже)
Моя цель - создать сайт с аутентификацией OpenID (или OAuth), а также с устаревшей
электронная почта + пароль аутентификации. Сайт будет на платформе django. (питон)
Я понимаю разницу между OAuth и OpenID и разницу между авторизацией и аутентификацией.
Моя основная цель - реализовать вход openid с Google в качестве поставщика удостоверений.
Процесс входа и регистрации должен быть таким же, как на многих сайтах.
Как я вижу:
сценарий регистрации:
1) пользователь вводит URL-адрес openid (нажимает кнопку Google)
2) пользователь перенаправляется к провайдеру аутентификации (Google)
страница говорит:
"Отличный сайт" попросите у вас:
электронная почта, язык, страна ...
3) пользователь говорит "да" ... получает перенаправление обратно
за кадром "Шикарный сайт"
пытается повторить язык электронной почты и другую информацию о пользователе
с использованием токена доступа
4) Пользователь заполняет другие данные, необходимые в профиле ..
и это все .. он теперь зарегистрирован.
Сценарий входа:
1) пользователь вводит URL-адрес openid (нажимает кнопку Google)
1.a) если пользователь уже вошел в систему на провайдере аутентификации
хм ... мне непонятно .. но как-то пользователь
войти в систему без отображения страницы поставщика (может быть, она быстро закрывается?)
1.b) если пользователь не вошел в систему поставщика
затем провайдер отображает страницу входа и перенаправляет обратно
на отличный сайт в случае успеха.
Потому что мне нужно получить некоторые пользовательские данные
мне кажется, что я должен использовать:
OAuth или гибридный (расширения OpenID + OAuth)
протокол.
То, что мне непонятно:
- Как мне получить объем информации, которая мне нужна ..
я искал, но не могу найти .. нашел в чьем-то блоге
https://www.googleapis.com/auth/userinfo#email для электронной почты
а как насчет языка пользователя, страны ... и т.д .. где это задокументировано?
- Если я буду использовать OAuth - хватит ли
делать и то, и другое - регистрацию и логин
или мне нужно будет получить данные пользователя через OAuth
и войти с OpenID?
- Можно ли использовать OAuth 2.0 в моем сценарии?
или будет проще использовать 1.0, потому что мне не нужно
пользовательских данных больше нет после первоначальной регистрации аккаунта?
(я думаю, 1.0 более сложный, потому что он имеет 3 фазы ..
но 2.0 более сложен, потому что токен доступа истекает .. но
истечение срока не будет проблемой в моем сценарии, так как мне не нужны пользовательские данные
после регистрации)
- Есть несколько библиотек:
при чтении документов google api я обнаружил:
- Google-api-python-клиент
- openid-python-openid
- gdata-python-клиент
(предполагается, что это api для служб Google, не знаю, есть ли в нем oauth
хм .. согласно этому http://code.google.com/intl/ru/apis/gdata/docs/auth/oauth.html
в нем есть oauth
)
- python-oauth-client (http://code.google.com/p/python-oauth-client/)
- Я хоть и много, но потом обнаружил:
http://your-move.appspot.com (исходные файлы: https://github.com/sje397/Chess)
который, похоже, использует google.app.engine lib
из google.appengine.api импортировать пользователей
Так что выбрать?
- До сих пор я пришел к выводу, что простейшей реализацией будет:
Нравится:
http://code.google.com/p/google-api-python-client/source/browse/samples/oauth2/django_sample/buzz/views.py
Но строки 38-44: в моем случае будут извлекать язык электронной почты пользователя и другие вещи (а также я буду использовать другую область видимости .. строка 29)
для нового зарегистрированного пользователя .. или, если это зарегистрированный пользователь, просто проигнорируйте учетные данные и удалите их. (продолжить сеанс сайта)
Я ошибаюсь ?
Я видел так много реализаций в упомянутых выше библиотеках, что сомневаюсь, что я прав.
- И еще вопрос:
моя резервная устаревшая аутентификация будет использовать электронную почту как логин ..
Если поставщиком удостоверений является поставщик услуг электронной почты (Google) ..
Когда пользователь пытается войти в систему, я могу получить электронную почту от провайдера ... и выполнить поиск
электронная почта получена от провайдера в базе данных .. так что я могу найти пользователя.
Что делать, если поставщик удостоверений не является поставщиком электронной почты:
нравится facebook? Как я буду искать пользователя в базе данных?
задан Turnaev Evgeny 3 May 2011 в 14:11
поделиться