OpenID OpenID: как лучше всего связать несколько учетных записей OpenID с одним пользователем?
Я новичок в openID. Я трачу много времени, думая, что лучшие практики-это предоставить пользователю выбор, войти в систему с различными учетными записями с поддержкой OpenID.
(я должен дополнительно уточнить, что моя система не является системой, которая требует только простой "одноразовой аутентификации" для публикации в блоге, а скорее является полноценной системой, такой как сайт социальной сети, где пользователь всегда будет добавлять дополнительную информацию и редактировать существующую информацию для "своего личного кабинета" ...поэтому система сам по себе требует иметь какую-то "учетную запись", которая будет связана с работой пользователя.)
Учитывая тот случай, что я не создаю "выделенный useraccount с паролем и именем пользователя для mysite" и полагаюсь только на логины openID, я столкнулся со следующей проблемой: Когда пользователь " А " входит в систему (в первый раз) через "учетную запись Google", то все, что он делает, будет связано с учетной записью Google. Когда он вернется и не нажмите на кнопку "Регистрация аккаунта Google", но вместо "Yahoo Signin", он войдет в систему, но создаст/получит новую учетную запись, связанную с Yahoo. Все, что он сделал с аккаунтом Google, кажется, потеряно. Простой OpenID OpenID indepedant and unique username (без пароля) на моем сайте не работает: как если бы я попросил это уникальное имя пользователя (без пароля) при входе в систему, каждый мог бы угадать имя пользователя других и связать OpenID с ними. Но если у меня также должен быть пароль для этого имени пользователя, чем я OpenID OpenID закончился там, где мы были в прошлом: тогда я должен выдать пользователю какой-то "мастер-счет" (с usernam и passwort), который он может, для удобства, связать с любым количеством счетов openId. Но по какой причине я должен иметь openID в этом случае? Так как пользователь должен помнить "мой masterpassword и userid" в любом случае...
=> означает ли это, что openID не "напрямую" поддерживает "свободный выбор" нескольких учетных записей? Если я хочу, чтобы пользователи могли войти в систему (для каждый отдельный вход) с произвольной учетной записью openID-это единственный способ сделать это таким образом:
1.) Пользователь входит в систему через "известный openID аккаунт" = > thats fine ничего не нужно делать
2.(OpenID OpenID OpenID) = > "аутентифицировать" пользователя через" неизвестный " openId (например, Yahoo), но когда пользователь возвращается на мою страницу, сообщите пользователю, что этот (Yahoo) openID аккаунт неизвестен (=с ним не связана никакая дальнейшая работа=его как новый аккаунт) и попросите, если он, возможно, вошел в систему в последний раз через другую учетную запись и предоставил список поддерживаемых учетных записей openID. Затем пользователь может выбрать один из поставщиков, которые он использовал в прошлый раз (например, Google). Затем он в дополнение к уже сделанному логину (с Yahoo), он также должен войти в "старый" (Google) аккаунт, который он использовал в последний раз. Оба аккаунта затем "связаны друг с другом" , и любая работа на старом аккаунте (Google) теперь может быть доступна также через новый (Yahoo) openID учетная запись / логин?
Или есть какой-либо другой способ поддержки "нескольких учетных записей openID" для одного счета пользователя?
(причина, по которой я спрашиваю: OpenID еще не так хорошо известен обычным пользователям. Если Facebook Facebook напечатает большой список с логинами от Google, Yahoo, то в Facebook будет много пользователей, которые используют Google для своего первоначального входа, но в следующий раз, когда они вернутся, возможно, выберут facebook (так как они только что покинули Сайт facebook и его более привлекательным, чтобы нажать на значок facebook). Этот вот как "работали сайты" в течение последних "15 лет": был только один единственный способ входа в систему: одно поле ввода имени пользователя и одно поле ввода пароля. Если я сейчас напечатаю огромный список учетных записей, где у пользователя есть учетная запись с каждой из них, то могу войти в систему с разными учетными записями изо дня в день, не понимая, к какой проблеме это приведет. Таким образом, идеальным миром было бы то, что пользователь может войти в систему через произвольную учетную запись из списка моих openID-провайдеров и будет иметь все учетные записи, "связанные" с каждой другой...
Надеюсь, я смог описать, в чем состоит моя проблема.
Я очень ценю вашу помощь и идеи (mybe я совершенно неправильно понял здесь что-то)
Большое вам спасибо! Ян
4 ответа:
OpenID-это механизм аутентификации, а не механизм хранения профиля. У вас все равно должен быть уникальный идентификатор для человека на вашем сайте, и вы должны вести запись, в которой хранится OpenID в отношении этого уникального идентификатора таким же образом, как вы бы хранили пароль, связанный с этим уникальным идентификатором.
Да, пользователь должен будет войти в систему с обоими.
Facebook OpenID
- пользователь впервые входит в систему с помощью учетной записи Google, использует приложение и выходит из системы. Приложение создает внутренний логин пользователя (в таблице пользователя grombeestje) и связывает его с учетной записью Google. (в таблице громбеестье openid)
- позже пользователь вошел в Yahoo и снова вошел в систему с учетной записью Yahoo. Теперь пользователю предлагается шаг для идентификации с другими сервисами, а также
- a. пользователи выбирают Google счет.
- b. пользователь входит в систему с помощью учетной записи Google.
- c. приложение добавляет идентификатор Google id с текущим логином.
Кроме того, в любое время, когда пользователь пожелает, он может добавить логины в свой профиль и идентифицировать свои другие OpenID, такие как Blogger, Facebook и т. д. Если он создал разные логины (в таблице пользователя grombeestje) с этими учетными записями, то он может либо удалить один из локальных Логинов (в таблице пользователя grombeestje) с приложением, либо объединить их в один.
Есть таблица в базе данных с учетными записями пользователей, которая включает идентификатор пользователя и есть таблица ссылок, которая связывает OpenID с идентификатором пользователя.
Как
Пользователи таблицы
ID NAME
1 PIET
2 ки
И
Таблица openid
OPENID USERID
Http://..... 1
Http://..... 1
Http://..... 2
Http://..... Два