1. Евгений

    16.03.2011

    0 ↑
    0 ↓
    Задача такая. Нужно, чтобы каждый новый пользователь сайта автоматически, без каких-либо действий пользователя (без кликов, нажатий кнопок и т.д.), определялся на конкретном провайдере OpenID. Я припоминаю, что меня какие-то сайты автоматически узнавали как конкретного юзера ЖЖ или FaceBook. Возможно ли это, или я ошибаюсь?
  2. Ivan Sagalaev

    17.03.2011

    0 ↑
    0 ↓

    Так, например, Bing делает в результатах поиска. Только это никак не связано с OpenID, это работает через куки, оставляемые вторичными запросами на чужой сайт. Человек заходит на Facebook, а там висит невидимая картинка с адресом вида bing.com?facebook_user={id}. И запрос этой картинки оставляет на компьютере куку для домена bing.com, в которой написан id юзера Facebook'а. Соответственно дальше при походах на bing.com юзер известен.

    В браузерах есть, кстати, настройка безопасности, отключающая эту возможность, но по умолчанию у всех всё разрешено.

  3. Ivan Sagalaev

    17.03.2011

    0 ↑
    0 ↓

    Да, это я не абсолютно точно знаю, это просто теория. Во всяком случае, отключение таких "3rd party" кук убивает узнаванием Bing'ом Facebook'ового аккаунта.

  4. Ivan Sagalaev

    17.03.2011

    2 ↑
    0 ↓

    Посмотрел подробней, там наоборот происходит:

    • С результатов поиска Bing, делается запрос (скриптом или ещё как-то — неважно) на facebook.com.
    • Если у юзера включена галка, разрешающая сторонние куки, с этим запросом на facebook.com уходят его собственные куки с залогиненностью пользователя.
    • Facebook узнаёт пользователя и "сдаёт" его Bing'у, отдавая в ответ на этот запрос редирект на bing.com/fd/fb с идентификатором пользователя в GET-параметрах.
    • Дальше уже Bing обычным способо идёт на Facebook узнавать о пользователе публичную информацию.

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

  5. Евгений

    17.03.2011

    0 ↑
    0 ↓
    Спасибо, Иван.
    А сама авторизация по openID работает, если у юзера отключены сторонние куки? Вроде там тоже во фрейме страницы зависимого сайта открывается форма провайдера openID, которая читает свои куки.
  6. Ivan Sagalaev

    18.03.2011

    0 ↑
    0 ↓

    Нет, OpenID на наличие кук никак не завязан. И на наличие фреймов тоже. Это просто HTTP-редиректы между провайдером и консумером.

  7. Евгений

    24.03.2011

    0 ↑
    0 ↓
    Иван, а checkid_immediate вроде для этого предназначено - чтобы на конкретном OpenID провайдере автоматически, без команды пользователя его узнавать. Я правильно понимаю, и есть ли у этого механизма ограничения?

  8. Ivan Sagalaev

    25.03.2011

    0 ↑
    0 ↓

    В OpenID вообще ничего не делается без явной инициативы пользователя. Режим check_immediate лишь уведомляет сервер о том, что консумер не сможет показать пользователю серверную страницу подтверждения. Но если сервер должен её показать (а он должен для любых неизвестных сайтов), он просто завершает авторизацию отказом.

  9. Евгений

    28.03.2011

    0 ↑
    0 ↓
    Это значит, что в первый раз пользователь должен на сайт зайти явно, чтобы потом провайдер OpenID его мог подтверждать автоматически при check_immediate ?
  10. Ivan Sagalaev

    29.03.2011

    0 ↑
    0 ↓

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

  11. Это возможно. Есть сайты на которых сразу можно оставлять комментарии, через аккаунт Вконтакте, без предворительных действий (как вы и хотите). Но пока такую магию я видел только с Вконтактом.

    Можно пробежаться по кукам популярных OpenID провайдеров, таких как Яндекс, Гугл, ВК, ЖЖ, определить ссылку для авторизации и предоставить ее пользователю.

    Вобще тут нужно думать, уверен что такое можно осуществить.

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