Как связать двух провайдеров OpenID как одного пользователя

Я реализовал OpenID на своем веб-сайте, и мне любопытно, как такие сайты, как stackoverflow.com, могут определить, что моя учетная запись gmail связана с моей учетной записью facebook.

Например. Я впервые захожу на stackoverflow.com и вхожу в систему, используя свою учетную запись gmail. Затем я выхожу из системы, удаляю файлы cookie из своего браузера и возвращаюсь на stackoverflow.com, но на этот раз я вхожу в систему, используя facebook вместо gmail. Каким-то образом stackoverflow.com знает, что моя учетная запись facebook связана с моим gmail, потому что все мои пользовательские настройки восстанавливаются с того момента, когда я впервые вошел в систему с gmail. Итак, очевидно, что stackoverflow знает, что мои учетные записи Gmail и Facebook - это Я.

Вернемся к моей реализации: когда я вхожу в систему своих пользователей с помощью Gmail или Facebook, я получаю сообщение от RPX с некоторой пользовательской информацией, такой как их имя и адрес электронной почты. Можно ли с уверенностью сказать, что если у меня есть пользователь, который входит на мой веб-сайт со своей учетной записью gmail, [email protected], а затем входит в систему со своей учетной записью facebook, и их учетная запись facebook также использует [email protected], что они на самом деле тот же человек?

Неужели так другие люди достигают той же цели?


person justinl    schedule 03.01.2011    source источник


Ответы (1)


Я бы сказал, что безопасно предположить, что два человека с одним и тем же адресом электронной почты являются одним и тем же пользователем.

Другой способ сделать это - предоставить возможность связать две учетные записи на вашем сайте. Я хочу сказать, что я видел реализованную социальную аутентификацию, в которой, если вы входите в систему с помощью OpenID или Facebook, каждая из них будет отдельной сущностью. Прежде чем пользователь попытается использовать другую систему для входа в систему, вы можете предложить ему подключиться к своей учетной записи Facebook / Twitter / OpenID. Немного социальной инженерии может избавить вас от множества проблем. У вас, конечно, возникнет проблема, если они не подключатся, а затем войдут в систему отдельно. Вне всяких сомнений, TripIt позволяет объединять отдельные учетные записи в одну. Вы можете предоставить эту функцию.

Просто мысли.

person Sri Raghavan    schedule 03.01.2011
comment
Я рассмотрел вашу другую мысль. Мне было интересно, что произойдет, если они войдут в систему отдельно, используя Gmail и Facebook, а затем попытаются объединить одну из уже существующих учетных записей в другую. Думаю, мне просто нужно было выяснить, что будет перезаписано, и просто соединить две учетные записи. - person justinl; 03.01.2011
comment
Точно. Вы можете принять исполнительное решение, что, если что-то вступит в конфликт, будут использоваться данные Facebook, потому что они «более обновлены» или что-то в этом роде. В противном случае вы могли бы сделать это так же, как git, если бы у вас возникли конфликты во время слияния - предоставьте пользователю конфликтующие данные, которые у вас есть, и попросите его выбрать, какие из них он хочет, чтобы вы сохранили. - person Sri Raghavan; 03.01.2011