1. Добрый день,

    Хотим использовать авторизацию по OpedID на одном из сайтов. Проблема в том, что никогда этого не делали, хотелось бы узнать поподробнее про некоторые аспекты использования технологии.
    Во-первых, на сайте будет также и обычная регистрация (интегрированная в CMS сайта), поэтому получается 2 вида пользователей. Возникает вопрос - как это обычно программируется? Можно, скажем, изменить код модуля показа комментариев так, чтобы если у юзера есть непустое поле openID в БД, читать инфу о нем не из БД, а посылать запрос openID провайдеру и ее в комментариях выводить (логин, фотку...). Можно, наоборот, при первом обращении к некоторого openID создавать копию аккаунта в БД CMS (и потом как-то их синхронизировать). Оба варианта кажутся кривыми, как стоит делать?
    Во-вторых, если пользователь уже открыл сессию у провайдера (скажем, вошел в аккаунт на ЖЖ), надо как-то понять, что он уже залогинен и не просить его логиниться по openID. Как это делается - чтением куки с сайтов провайдеров или как?
  2. Ivan Sagalaev

    03.02.2011

    3 ↑
    0 ↓

    Здравствуйте!

    Секрет в мирном сосуществовании OpenID с логин-парольной регистрацией в том, что пользователи должны быть одни и те же. То есть у любого пользователя должен быть свой нормальный аккаунт в вашей CMS, и это решает все вопросы с тем, как отличать пользователей в коде комментариев — никак не отличать :-).

    Единственная разница будет в создании этого аккаунта. В традиционном случае при регистрации пользователя он (или система) придумывает логин с паролем, и они являются отличительным признаком этого аккаунта. В случае с OpenID отличительным признаком вместо пары логин-пароль выступает сам OpenID идентификатор — URL. OpenID всего лишь уносит проверку его принадлежности конкретному человеку к провайдеру, а вы ему в этом доверяете (или не доверяете, можно придумать какие угодно правила). На практике это выглядит так:

    • человек приходит на форму регистрации и видит там интерфейс OpenID (сейчас это чаще всего кнопки "Яндекс", "Google", и т.д.)
    • человек проходит проверку по OpenID у своего провайдера и возвращается к вам на сайт с подтверждённым URLом — идентификатором
    • вы в вашей CMS заводите обычный аккаунт и привязываете его к OpenID URL, чаще всего для этого заводится отдельная таблица, в которой просто записывается соответствие URL'ов вашим ID
    • во время проверки OpenID имеет смысл попросить у человека дополнительные данные, которые вам нужны: email, ник, ФИО и т.д.
    • если данных не хватает или человек их почему-то не передал, можно прогнать его через форму регистрации

    Можно даже сгенерировать ему автоматически логин с паролем, чтобы он мог входить на сайт не только по OpenID, но и по ним. Но в любом случае, для входа на сайт у вас будет два механизма: либо ввести логин-пароль, либо проверить OpenID. При проверке OpenID вы, соответственно, ищете уже зарегистрированный аккаунт и логините его, как обычно.

    Про то, залогинен человек у провайдера или нет, вам знать не нужно, этот процесс происходит на провайдерской стороне.

  3. спасибо

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.