Аутентификация через соц. сети, что делать?

Доброе утро!
Для обучения, решил написать класс для аутентификации через соц. сети.
С oauth разобрался, api тоже.

Возник следующий вопрос:
К примеру на сайте есть зарегистрированный пользователь с почтой name@mail.com.
Спустя какое то время, этот пользователь решает зайти с помощью соц. сети, скажем vk.com.
О нажимает кнопку, проводим все действия и получаем данные из vk.
{
    id: 1,
    first_name: "Name",
    last_name: "Last",
    email: "name@gmail.com"
}


И тут у меня возник вопрос, как логически верно объединить аккаунт который имеется на сайте с аккаунтом из соц. сети.
Понятно, что добавляем в БД vk.id
Сейчас у меня идет проверка в БД пользователя по email, если таковой находится, то пускаем на сайт. Мне кажется не слишком безопасный подход, может я себя накручиваю?
  • Вопрос задан
  • 933 просмотра
Решения вопроса 1
OAuth подрузумевает, что вы доверяете данным провайдера. Он подтверждает, что Вася - это Вася. Большинство соц. сетей с этим справляется за одно борясь с фиктивными аккаунтами. Единственное слабое звено: у пользователя увели его почтовый ящик. Это, к сожалению, вы никак не сможете отследить.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mr_T
@mr_T
Web-разработчик
Тут важный момент есть: некоторые соцсети не дают доступа к мылу (например, VK). Да и может быть ситуация, когда разное мыло на соцсети и на сайте, но пользователь один. Лучше после того, как была произведена авторизация у провайдера, спрашивать e-mail (а лучше и пароль тоже) явно, но если провайдер предоставил e-mail, то просто подставлять его в соответствующее поле в форме. Если пытаешься использовать существующее мыло, то выдавать ошибку и предлагать сначала войти, а потом привязать аккаунт в личном кабинете (типа как на хабре).
Ну а в базе хранить пары провайдер-UID либо прямо в поле у пользователя, либо в отдельной таблице.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы