Как обрабатывать несколько openID для одного и того же пользователя - PullRequest
4 голосов
/ 27 июня 2011

Для своего сайта я использую систему входа, похожую на ту, что на SO. Пользователь может войти с помощью своей учетной записи Facebook, Google (Gmail openID), Twitter.

Этот вопрос не касается конкретных реализаций oAuth или openID.

Вопрос в том, как узнать, входит ли один и тот же пользователь в разные провайдеры.

Позвольте мне привести пример:

Бобо приходит на сайт для входа на сайт, нажав «Войти через Facebook» . Поскольку это его первый визит, мы создаем для него аккаунт.

Позже Бобо заходит на сайт. На этот раз он нажимает «Войти через Google» . Так как я узнаю, что это один и тот же человек, чтобы я мог добавить этого провайдера в свою учетную запись вместо создания новой (и дублирующей) учетной записи.

Могу ли я доверять только по электронной почте?

Какой лучший способ справиться с этим. Как ТАК это делает?

Есть идеи?

Edit: Если я доверяю по электронной почте, есть ли вероятность, что один и тот же адрес электронной почты может использоваться разными пользователями? Может ли это быть проблемой безопасности?

Ответы [ 3 ]

1 голос
/ 27 июня 2011

Я думаю, что вы не можете этого знать, если пользователь явно не скажет, что это Бобо.Его идентификаторы FB и Google OpenID могут иметь совершенно разную информацию (как и моя).Только Бобо знает, что они принадлежат одному и тому же человеку.

Посмотрите, как это делается здесь, в SO: вы входите в систему с OpenID, а затем можете связать другой OpenID с вашей учетной записью.Подсказка, ваш пользователь тоже так делает.Предоставьте достаточно большую кнопку «У меня уже есть учетная запись здесь» в процессе входа в систему.

0 голосов
/ 27 июня 2011

Зайдите в свой профиль на этом сайте, там, над вашими данными, вы увидите 2 ссылки: редактировать |add openid

Обычно у вас будет 1 пользователь = 1 логин (логин / пароль хранятся вместе с остальной информацией).В этой ситуации с несколькими идентификаторами необходимо хранить данные для входа отдельно (1 пользователь может иметь более одного идентификатора).Простое отношение 1-ко-многим между таблицами БД.

0 голосов
/ 27 июня 2011

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

Если вы хотите, чтобы пользователь мог войти в систему с несколькими учетными записями oAuth / OpenID, вы можете предоставить механизм, позволяющий пользователю добавлять дополнительные аутентификации из своей учетной записи.

...