Я немного запутался насчет OpenID OAuth.
(под OAuth - я имею в виду OAuth 2.0 здесь и позже)
Моя цель - создать сайт с аутентификацией OpenID (или OAuth), а также с устаревшей версией.
адрес электронной почты + пароль Сайт будет на основе Django. (Python)
Я понимаю разницу между OAuth и OpenID и разницу между авторизацией и аутентификацией.
Моя основная цель - внедрить openid логин с google в качестве провайдера идентификации.
Вход в систему и регистрация должны быть такими же, как на многих сайтах.
Как я вижу:
сценарий регистрации:
1) пользователь вводит открытый URL-адрес (нажимает кнопку Google)
2) пользователь перенаправляется к провайдеру аутентификации (Google)
Страница говорит:
"Удивительный сайт" попросите:
электронная почта, язык, страна ...
3) пользователь говорит да .. перенаправляется обратно
за кадром "Удивительный сайт"
повторяет язык электронной почты и другую информацию о пользователе
используя токен доступа
4) Пользователь заполняет другие вещи, необходимые в профиле.
и это все .. он сейчас зарегистрирован.
Сценарий входа в систему:
1) пользователь вводит открытый URL-адрес (нажимает кнопку Google)
1.a) если пользователь уже авторизовался на провайдере аутентификации
хм ... мне непонятно .. но как-то пользователь
войти в систему без отображения страницы провайдера (может быть, она быстро закрывается?)
1.b) если пользователь не вошел в систему провайдера
затем провайдер отображает страницу входа и перенаправляет обратно
чтобы сайт был успешным.
Потому что мне нужно получить пользовательские данные
мне кажется, что я должен использовать:
OAuth или Hybrid (расширения OpenID + OAuth)
протокол.
Вещи, которые мне не понятны:
- Как мне получить информацию, которая мне нужна?
я искал, но не могу найти .. нашел на чьем-то блоге
"https://www.googleapis.com/auth/userinfo#email" для электронной почты
но как насчет языка пользователя, страны .. и т.д .. где это задокументировано?
- Если я буду использовать OAuth - этого будет достаточно
сделать и то и другое - регистрация и вход
или мне придется получать пользовательские данные с OAuth
и войти с OpenID?
- Можно ли использовать OAuth 2.0 в моем сценарии?
или будет проще использовать 1.0, потому что мне это не нужно
пользовательские данные больше после первоначальной регистрации учетной записи?
(Я думаю, что 1.0 является более сложным, потому что он имеет 3 фазы ..
но 2.0 сложнее, потому что токен доступа истекает .. но
истечение срока не будет проблемой в моем сценарии, так как мне не нужны пользовательские данные
после регистрации)
- Там лежат несколько сыновей:
читая google api docs я нашел:
Так какой же выбрать?
- До сих пор я пришел к выводу, что самая простая реализация будет:
Как это:
http://code.google.com/p/google-api-python-client/source/browse/samples/oauth2/django_sample/buzz/views.py
Но строки 38-44: в моем случае я бы выбрал язык электронной почты пользователя и другие вещи (а также я буду использовать другую область видимости .. строка 29)
для нового зарегистрированного пользователя .. или, если он зарегистрирован, просто игнорируйте учетные данные и удалите их. (продолжить сессию сайта)
Я ошибся ?
Я видел так много реализаций на библиотеках, упомянутых выше, что я сомневаюсь, что я прав.
- А также еще один вопрос:
мой резервный старый аутентификатор будет использовать электронную почту в качестве логина ..
Если поставщик удостоверений является поставщиком электронной почты (Google) ..
Когда пользователь пытается войти, я могу получить электронную почту от провайдера .. и искать
электронная почта получена от провайдера в базе данных .. так что я могу найти пользователя.Что, если провайдер идентификации не является провайдером электронной почты: например, Facebook?Как я буду искать пользователя в базе данных?