OpenID: Как лучше всего связать несколько учетных записей OpenID с одним пользователем? - PullRequest
22 голосов
/ 12 ноября 2009

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

(Мне необходимо дополнительно уточнить, что моя система - это не система, которая требует только «однократной аутентификации» для публикации в блоге, а скорее полная система, такая как сайт социальной сети, где пользователь всегда будет добавлять больше информации и отредактируйте существующую информацию для «своей личной учетной записи» ... Таким образом, сама система требует наличия некоторой «учетной записи», которая будет связана с работой, которую выполняет пользователь.)

Учитывая тот случай, что я не создаю «выделенную учетную запись пользователя с паролем и именем пользователя для mysite» и полагаюсь только на входы в систему openID, я столкнулся со следующей проблемой: Когда пользователь «А» входит в систему (впервые) через «учетную запись Google», все, что он делает, будет связано с учетной записью Google. Когда он вернется и не нажмет на «Вход в учетную запись Google», а на «Yahoo Signin», он войдет в систему, но создаст / получит новую учетную запись, связанную с Yahoo. Все, что он сделал с учетной записью Google, похоже, потеряно. Простая выдача каждому пользователю «независимого и уникального имени пользователя openID» (без пароля) на моем сайте не работает: как будто я запрашиваю это уникальное имя пользователя (без пароля) при входе в систему, каждый может угадать имя другого пользователя и связать OpenID с ними. Но если мне также понадобится пароль для этого имени пользователя, то я окажусь там, где мы были в прошлом без openID: тогда я должен выдать пользователю какую-то «основную учетную запись» (с usernam и passwort), которую он сможет, для удобства ассоциируйте с любым количеством учетных записей openId. Но по какой причине у меня есть чем openID в этом случае? Поскольку пользователь должен помнить «мой пароль и идентификатор пользователя» в любом случае ...

=> Означает ли это, что openID «напрямую» не поддерживает «свободный выбор» нескольких учетных записей? Если я хочу, чтобы пользователи могли входить (для каждого отдельного входа) с произвольной учетной записью openID, это единственный способ сделать это:

1.) Пользователь входит в систему через «известную учетную запись openID» => ничего, что нужно сделать

2.) Пользователь входит в систему через «неизвестную учетную запись openID» => «аутентифицировать» пользователя через «неизвестный» openId (например, Yahoo), но когда пользователь возвращается на мою страницу, укажите ему, что эта (Yahoo) учетная запись openID неизвестна (= дальнейшая работа с ней не связана = она похожа на новую учетную запись) и спросите, не мог ли он войти в последний раз через другую учетную запись и предоставить список поддерживаемых учетных записей openID. Затем пользователь может выбрать одного из провайдеров, которых он использовал в последний раз (например, Google). Затем он, в дополнение к уже сделанной учетной записи (с Yahoo), должен также войти в «более старую» (Google) учетную запись, которую он использовал в последний раз. Затем обе учетные записи «связаны друг с другом», и теперь к любой работе над более старой (Google) учетной записью можно получить доступ также через более новую (Yahoo) учетную запись openID / логин?

Или есть какой-либо другой способ поддержки «нескольких учетных записей openID» для ОДНОГО USERACCOUNT?

(Причина, по которой я спрашиваю это: OpenID пока мало известен обычным конечным пользователям. Если я распечатаю большой список с логинами из Google, Yahoo в Faceebook, многие пользователи будут использовать Google для своих начальных целей. Войдите в систему, но в следующий раз, когда они вернутся, возможно, выберут Facebook (так как они только что покинули сайт Facebook, и более привлекательным было щелкнуть значок Facebook). Вот как «веб-сайты работали» в течение последних «15 лет»: один единственный способ входа в систему: одно поле ввода имени пользователя и одно поле ввода пароля. Если я сейчас распечатаю огромный список учетных записей, в которых у пользователя есть учетная запись, каждая из которых может входить с разными учетными записями изо дня в день. не понимая проблемы, к которой это приведет. Таким образом, идеальный мир состоит в том, что пользователь может войти через произвольную учетную запись моего списка openID-Provider, и все учетные записи будут «связаны» друг с другом ...

Надеюсь, мне не удалось описать, в чем заключается моя проблема.

Я очень ценю вашу помощь и идеи (возможно, я что-то здесь совершенно не понял)

Большое спасибо! Jan

Ответы [ 4 ]

14 голосов
/ 20 ноября 2009

Да, пользователь должен будет войти в систему с обоими.

  1. Пользователь впервые входит в учетную запись Google, использует приложение и выходит из системы. Приложение создает внутренний логин пользователя (в таблице пользователя grombeestje) и связывает его с учетной записью Google. (в таблице Громбестье openid)
  2. Позже, пользователь вошел в Yahoo и снова вошел в систему с учетной записью Yahoo. Теперь пользователю предлагается шаг идентифицироваться и с другими сервисами.
    • а. Пользователи выбирают и выбирают учетную запись Google.
    • б. Пользователь входит в систему с учетной записью Google.
    • с. Приложение добавляет идентификатор Google с текущим логином.

Кроме того, в любое время, когда пользователь пожелает, он может добавить логины в свой профиль и идентифицировать другие открытые идентификаторы, такие как Blogger, Facebook и т. Д. Если он создал разные логины (в таблице пользователя grombeestje) с этими учетными записями, он может удалите один из локальных логинов (в таблице пользователя grombeestje) с приложением или объедините их в один.

7 голосов
/ 12 ноября 2009

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

6 голосов
/ 12 ноября 2009

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

как

пользователей таблицы

ID NAME

1 PIET

2 KEES

и

таблица открытых

ОТКРЫТЫЙ ПОЛЬЗОВАТЕЛЬ

http: // ..... 1

http: // ..... 1

http: // ..... 2

http: // ..... 2

2 голосов
/ 12 ноября 2009

Похоже, вам нужно заставить пользователя войти в систему с обоими, чтобы соединить их вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...