Всем привет. Хочу реализовать возможность заходить и регистрироваться на сайте через социальные сети, но появилось несколько вопросов, по поводу реализации данной задумки. Имеются различные сервисы по реализации этого метода Loginza и uLogin. Они как бы удобные, но в тоже время нет. Решил реализовать самостоятельно. У меня уже имеется база с пользователями, где человек авторизовывается на сайте с помощью е-маил и пароля. Стал интересен момент, что если использовать сервисы, то один человек, в зависимости в сколки соц. сетях он зарегистрирован он может создать зарегистрировать более одного аккаута, что я бы не хотел. Пробовал uLogin, вроде все удобно, кроме перечисленного недостатка выше и еще после регистрационного момента, человека редиректит на мой сайт и передает ему данные для обработки в POST. Мой сайт реагирует на это, как на попытку атаки csrf. Так же метод зависит от сервиса, в случаи неполадки функция не будет работать на моем сайте. Первый вопрос, который я хотел бы узнать: Каким образом производится регистрация, если у меня уже есть база пользователей, где авторизация по е-маилам? Может ли человек зарегистрированный на сайте ранее пользоваться авторизацией через соц. сети? Если с помощью ВКонтакте авторировываться вручную, то он не дает адрес почты, а если через uLogin, то есть такая возможность. Второй вопрос, который я хотел бы узнать: Как предотвратить возможность клонирования аккаунтов из разных соц. сетей? Искал подобную информацию в интернете - не нашел. Если вы нашли, то ссылки будет достаточно. =)
Ответ
Сделайте привязку логинов из соцсетей/openid к аккаунтам на вашем сайте по схеме 1 аккаунт - несколько записей из соцсетей/openid. Если человек авторизовывается через uLogin/Loginzу, привязывать полученный результат к уже существующему аккаунту (сверять по адресу почты) или создавать новый при отсутствии такого имейла в вашей базе. То есть, если на разных логинах соцсетей/openid у человека одинаковый адрес email - при входе через эти разные логины всё-равно получится одна учётная запись на вашем сайте. Ещё, обратите внимание как это сделано на хэшкоде и на многих других сервисах: на странице "Настройки доступа" есть "внешние источники аутентификации для вашей учетной записи". Их может быть несколько, но все они ведут на одну учётку. Тоесть, если рассматривать email как "уникальный" ключ, то можно отследить повторные входы одного человека, тем более что uLogin при входе через вконтактик отдаёт адрес почты пользователя. Насчёт зависимости от сервиса посредника - это да, но вот только без него вам надо будет по отдельности налаживать взаимодействие с каждым из провайдеров авторизации. Можете попробовать сделать какую-нибудь резервную схему - с гуглом/вконтактиком/маилру наладить прямое взаимодействие, и, на случай если uLogin сломается, работать без посредника. Насчёт кода - и uLogin и Loginza предоставляют примеры работы и плагины для популярных cms/фреймворков. Можно скачать и изучить как они устроены.
Комментариев нет:
Отправить комментарий