Разработчик
0,1
рейтинг
11 марта 2013 в 11:34

Разработка → Отказ от стандартной авторизации в пользу социальной из песочницы

Уже достаточно давно многие сайты предоставляют наряду со стандартной авторизацией, авторизацию через социальные сети и веб-сервисы. Перед вами стоит выбор:

  1. Пройти относительно длинный путь регистрации — ввод email/пароля/капчи и активация по email.
  2. Просто нажать на иконку социальной сети, в которой у вас заведён аккаунт, и подтвердить доступ.

А почему бы вообще не отказаться от стандартного механизма регистрации? Кстати именно такой подход и реализован на веб-сервисе on{X} от Microsoft — авторизация только через Facebook.

Но не всё так радужно, как может показаться на первый взгляд. Выделим положительные и негативные стороны социальной авторизации с учётом того, что мы собираемся полностью отказаться от регистрации по комбинации email/пароль.

Достоинства:
  • Быстрая авторизация на сайте.
  • Данные о пользователе от провайдера авторизации.
  • Отсутствие паролей.
  • Отсутствие активации аккаунта.
  • Единственная форма — форма авторизации.

Недостатки:
  • Некоторые провайдеры авторизации не отдают email.
  • Разный формат предоставляемых данных о пользователе.
  • Предпочтения аудитории.
  • Можно забыть через какой сервис проходил авторизацию.


С достоинствами этого подхода всё ясно. Нас же больше интересуют недостатки и пути их решения.

Недостатки


Некоторые провайдеры авторизации не отдают email

Да, самая важная информация, которую нам надо знать о пользователе, у некоторых провайдеров может быть недоступна. В частности Вконтакте и Одноклассники в общедоступном API не отдают его. Facebook и Google более лояльно относятся к email адресу и с помощью определённых разрешений успешно вернут вам эту информацию.
Решение:
  1. Одно из популярных решений проблемы — просто спросить его у пользователя после авторизации. Это добавит дополнительный диалог и придётся делать процедуру активации.
  2. В зависимости от целевой аудитории отказаться от провайдеров авторизации, которые не отдают email.
  3. Не использовать электронный адрес. Опять же не везде можно так легко отказаться от практически единственного средства обратной связи с пользователем. Допустим соц. сеть Вконтакте использует для регистрации номер мобильного телефона. Тут нужно подумать о том — как пользователь восстановит доступ к сайту, если он удалит аккаунт в социальной сети.

Разный формат предоставляемых данных о пользователе

Иногда требуется знать о пользователе немного больше, чем просто идентификатор в соц. сети. К таким данным могут относиться: имя, фамилия, ник, пол, аватар, дата рождения. Так как протоколы OAuth и OpenID не предназначены для получения каких-либо данных о пользователе, то придётся использовать API каждого конкретного сервиса и возвращаемые данные будут везде разные. В частности провайдеры авторизации Google, Вконтакте, Facebook и Одноклассники предоставляют все перечисленные выше данные. Осталось их только обработать.
Решение: если очень нужны дополнительные данные о пользователе — сделайте их запрос у сервиса авторизации. Если нужно ещё более специфичные данные — попросите пользователя ввести их самостоятельно после авторизации.

Предпочтения аудитории

Ну, вот мы и добрались до самого проблемного вопроса — а не отобьёт ли такой отказ от стандартной регистрации вашу целевую аудиторию? Моё мнение по этому поводу такое: даже если человек наотрез не хочет проходить авторизацию через социальные сервисы, но альтернатив вашему сервису нет, то он в конечном итоге сдастся. Я же лично придерживаюсь такого алгоритма: если я планирую пользоваться каким-то конкретным сервисом в будущем, то я обязательно регистрируюсь там через логин и пароль. Если же на сайте не будет такой возможности, то я буду авторизоваться через соц. сети.
Даже если пользователя нет в социальных сетях, то у него по любому должен быть почтовый аккаунт gmail, mail.ru или других сервисов. Следовательно, случай, когда у пользователя просто нет ни одного аккаунта у предоставляемых сервисов авторизации, маловероятен.

Можно забыть через какой сервис проходил авторизацию

Если ваш ресурс даёт возможность авторизоваться через over9000 провайдеров, а у пользователя есть как минимум 2 аккаунта у этих провайдеров, то он может просто забыть каким конкретно способом он входил на сайт. В случае ошибки будет создана никому не нужная запись о новой регистрации в БД.
Решение: записать в cookies сервис авторизации и выделять его на странице входа. Возможно, это создаёт какую-то угрозу безопасности, но я не могу сходу придумать, как можно серьёзно этим воспользоваться.

Заключение


Идея отказа от обычной регистрации очень соблазнительна, но всё зависит от того сможете ли вы избавиться от описанных проблем.

P.S. Немного статистики от uLogin можно прочитать тут.
Павел @TheSteelRat
карма
6,0
рейтинг 0,1
Разработчик
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (46)

  • +3
    На некоторых сайтах есть регистрация с помощью соц сетейтете те из них берутся пости все данные. Потом пользователь входит просто введя их. Это на мой взгляд лучше
    • 0
      не знаю, Почему Вас минусуют, но идея действительно хорошая. При условии, конечно, возможности множественного входа (используя, например, как почту и некий пароль, так и вход через внешнего провайдера).

      Основная проблема такого подхода — необходимость по сути микро-регистрации пользователя: так или иначе, нужно запросить у пользователя пароль, а также указать, какие ещё данные(логин, имя, телефон, почта) он может использовать для входа.
      • –3
        Ну всё-таки хотелось бы избавиться от регистрации по email/паролю. К сожалению придётся чем-то пожертвовать.
        • 0
          Как и писали внизу — это палка о двух концах. А вот если бы вы добавили сохранение телефона/e-mail, и возможность входа по ним в экстренных ситуациях — было бы прекрасно.

          Предполагаемый сценарий — я теряю доступ к соц. аккаунту, но хочу продолжить использование Вашего сервиса. Я нажимаю «прислать пароль на почту», и через пару минут могу продолжить использование сервиса
          • 0
            Обычно взлом аккаунта в социальной сети подразумевает взлом почты, так что это не очень секьюрный вариант на мой взгляд. В таком случае лучше использовать двухуровневую авторизацию.
        • +3
          Зачем от него избавляться, что плохого в классическом методе регистрации? Если удобно регистрироваться на свои почтовые ящики, почему нужно уходить в сторону к каким-то сервисам третьей стороны (которые, к слову, предоставляют регистрацию через почтовые ящики)? Да, пользователям соцсетей, залогиненным и имеющим куки, и желающим использовать на сайте свой профиль и ящик, можно будет сделать на пару кликов меньше. Это им будет удобно. Но ведь это дополнительная возможность для пользователей этих соцсетей, как быдь тем людям, кто не может или не хочет использовать эти сервисы?
          • 0
            Зачем избавляться? Разработчику не надо будет так много прикладывать усилий для сохранности пользовательских данных (хеширование паролей и их хранение). Клиенту меньше головняка с прохождением процесса регистрации.
            Да, есть свои недостатки. Но это уже по выбору разработчика (on{X} отказались от процесса регистрации).
  • +6
    Допустим, я зарегистрирован только в одной соцсети.
    Я пользовался вашим сайтом, он мне дорог, и я хочу продолжать им пользоваться.
    За мной стал наблюдать маньяк и я срочно удалился из соцсети.
    Я лишаюсь своего аккаунта у вас?
    • –1
      Если внимательно прочитать статью, то можно увидеть, что я упомянул это
      Тут нужно подумать о том — как пользователь восстановит доступ к сайту, если он удалит аккаунт в социальной сети

      Выбор стоит за вами. Я лишь описываю с какими проблемами можно столкнуться и как их решить.
  • +11
    В списке недостатков не хватает одного «незначительного»:
    • Необходимо затащить пользователя в социальную сеть
    • –1
      Почитайте второй абзац пункта «Предпочтения аудитории»
      • +12
        Даже если пользователя нет в социальных сетях, то у него по любому должен быть почтовый аккаунт gmail, mail.ru или других сервисов.

        Некоторые пользователи не очень любят, когда за них решают какой аккаунт у них «по любому должен быть».
        • 0
          Так за него никто и ничего не решает. Я просто объясняю, что вероятность того, что у пользователя не будет соц. аккаунта, через который можно будет авторизоваться, очень мала. Но опять же надо смотреть на целевую аудиторию ресурса.
  • +9
    Была же недавно статья на эту тему. У человека практически все было подвязано на ФБ аккаунте, и когда ему его заблокировали, он просто потерял свои аккаунты в других сервисах из за невозможности авторизоваться.
    • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      А это уже недоработка тех сервисов, где он потерял доступ. Facebook спокойно отдаёт email. По нему можно было бы восстановить аккаунт.
  • –1
    А может кто-то объяснить, почему минусуете статью? По-моему цель написания статьи вполне ясна — описать проблемы социальной авторизации и пути их решения. Что не так?
    • +9
      Вероятно потому, что не всем нравится авторизовываться через социальные сети, даже если они есть. Позвольте, какого черта сайт про рога и копыта должен знать мой GMail аккаунт, а то и профиль в фейсбуке?
      • –8
        Они ему нужны только для идентификации (email и идентификатор в соц. сети). Естественно, что параноикам это не очень нравится.
        • +4
          Они ему нужны только для идентификации (email и идентификатор в соц. сети).
          Это недоказуемо.
          • –4
            Мы сейчас не рассматриваем случаи, когда администрация не чиста на руку. Надо думать своей головой, прежде чем регистрироваться где попало и проверять предоставляемые сервису разрешения. В конечном итоге могут и мыло заспамить.
        • +3
          Как минимум, это предоставление своих личных данных постороннему сервису, которому пользователь может не доверять (а так же сбор потенциально «лишних» данных самой соцальной сетью, но с этим сложнее). Если пользователь не желает, чтобы некий сайт знал его личность и основной почтовый адрес, у него должна быть возможность не использовать свой профиль.
  • 0
    Если ресурс имеет мобильное приложение, то также есть проблема авторизации. Придется делать дополнительный диалог для пользователя и просить назначить пароль на акаунт. Либо генерировать ключ для доступа, но ключ будет не удобен для ввода, т.к. должен быть большим из соображений безопасности. Так что полностью уходить к авторизации через соцсети не совсем удобно.
  • +7
    Получается, чтобы пользоваться одним сервисом вам требуется, чтобы всегда был рабочим другой сервис.
    Это не лучший подход, поскольку
    1. вы навязываете регистрацию в соц. сетях, а многим, это совершенно не нужно.
    2. делаете свой сервис, зависящим от другого. Возможно развитые соцсети будут жить дольше, чем ваш сайт, но знать это на 100% невозможно.
    Думаю нужно искать какой-то независимый вариант типа электронной подписи, которая не требует сторонних сервисов.
    Тут, конечно, есть свои подводные камни, но ИМХО это лучше, чем соц. сети.
    • +4
      Да даже если сторонний сервис будет жить долго и счастливо, проблемы могут возникнуть в самом неожиданном месте. Была же недавно история, когда в России отвалился гугл на полдня и серверы его пинговавшие начали перезагружаться. Точно так же может админ в сети запретить социальные сети — и привет.
  • +4
    ИМХО. Чем больше вариантов регистраций/авторизаций тем лучше. Очень раздражают сайты где вход только через ФБ и Твиттер.
    Обычная авторизация тоже должна предоставлять варианты выбора, хочешь через емеил, хочешь по смс.
  • +4
    Что делать тем, кто не имеет аккаунтов в социальных сетях?
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Вы себе представляете портянку из сервисов, через которые я могу зарегистрироваться? Вы навсидку перечислили 6 сервисов + соцсети + кууууча других сервисов. Видимо придется ещё поиск к этой портянке прикручивать )
        • НЛО прилетело и опубликовало эту надпись здесь
  • +3
    А если у человека на работе заблокированы соцсети? И почтовый аккаунт не gmail а какой-нибудь vasyapupkin.com.
    • НЛО прилетело и опубликовало эту надпись здесь
      • +1
        Интересный подход. Т.е. вы готовы сознательно отказаться от значительной части аудитории? Или (грубо для примера) если я нахожусь на работе то не могу посмотреть мои заказы?
        Я не против авторизации через соцсети, но только как дополнительный способ.
        • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Тут надо сначала посчитать, какая часть аудитории значительней: те у кого есть аккаунты в соц.сетях или те, у кого нет.
          • 0
            Не лучше ли охватить и тех и других, дав возможность регистрироваться разными способами?
    • 0
      ну к vasyapupkin.com вполне можно свой openID сервис прикрутить же?
      ну и соответственно на сайте прикрутить возможность авторизации по кастомному openID.
      • +1
        Я так и вижу надпись на сайте:
        «Извините, но я не знаю вашего почтовика, поэтому попросите его прикрутить openID авторизацию и прислать мне запрос на добавление в список из ещё сотни подобных.»
        Это абсолютно не решение проблемы. Повторюсь, при попытке добавить сколько нибудь значительное количество сервисов вы теряете в удобстве. В противном случае — в охвате аудитории
        • 0
          не, у меня был смысл, что есть стандартные сети и плюс возможность зарегаться через катомные openID.
  • 0
    И так уже достала эта назойливая социальщина, а вы предлагаете отказаться от тёплой ламповой независимой регистрации. Могу только сказать, что я сразу же покину такой сайт и вряд ли когда-нибудь на него вернусь.
  • –2
    А я яростно за — миллиарды сайтов и в каждом заносить логин/пароль? Дануна!

    В том же хабре, стэке, гите — куда ни плюнь можно тыкнуть на кнопочку и ты уже там.

    Вот аутентификация по кнопочке — яростно за.

    Почту можно спросить позже.

    Самое ненавистное в жизни — делать одно и тоже тыщу раз. Если у нас уже есть где-то аккаунт, то лучше его зареюзать.
  • +5
    Как же задрала эта грёбаная социальщина там, где она нафиг ненужна… Ну вот зачем мне так авторизироваться на каком-нибудь сервисе, который например предоставляет какой-нибудь кашерный Канбан учёткой моей сети facebook, где я фотографии своей бурной пятничной жизни выкладываю. Этот сервис ещё не дай боже выкачает какую-нибудь пикантную фотку и мне на аватарку ляпнет или начнёт на стикеры клеять. А мне потом ещё в глаза людям смотреть, с коорыми мы пользуем этот сервис… Что за говно!

    Реальная история: Для того, чтобы оставить комментарий и оценку на Google Play, необходимо состоять {НЕЖДАНЧИК!} в Google+, куда я не хотел регистрироваться… Но меня заставили там регистрироваться (откладывал раз 100), да ещё провели через ад введения «реального имени» (который я так и не ввёл, кстати). И что в результате: появилась абсолютно пустая сущность в Google Play (Google, теперь в твоих отчётах появился ещё один 0 по сути — ну акционеры будут довольны). При этом, до момента, чтобы наконец просто не забить и всё же пройти эту пытку с регистрацией, прошло существенное время и я очень много чего не оставил полезного как пользователь Play Market'а, а мог бы — может это бы немного повлияло на автоматическое разгребание той помойки, которую их себя сейчас представляет Google Play… Думаю не у меня одного такой опыт… Вот и получается, что порой реально проще забить, чем «сдаваться»… Это какой же сервис такой незаменимый должен быть, чтобы вот я — упёртый баран — сдался (ответы Google Play — не принимаются)?

    … А я ещё не сказал, что у меня не первый год есть почта gmail и к этому аккаунту мой Android привязан?

    Разработчики, такими дебильными идеями вы отпугиваете даже попробовать ваш сервис, потому что по-настоящему незаменимых сервисов практически нет.
  • +5
    Если обязательна привязка к социалке — я просто не буду пользоваться этим сервисом. Даже не смотря что в социалках у меня есть три аккаунта (один для друзей, один для коллег, один для всякого шлака).

    А если вспомнить как ВК недавно заблокировал всех, кто не указал номер телефона то это отдельная история получается.

    Требовать привязку к социалке — все равно что требовать установку видеокамеры в спальне.
  • 0
  • 0
    Наличие возможности залогиниться через соцсеть — отлично.
    Убрать совсем обычную авторизацию по мылу и вынуждать пользователей пользоваться лишь логином через соцсеть — очень-очень фигово.
    Примерно похожая история с требованием мобильного телефона для регистрации в соцсетях. Хорошо, что пока это не массово. Печально, что порой варианта заиметь аккаунт без телефона уже нет совсем.
  • 0
    Хотелось бы обратить внимание, что OpenID обладает всеми преимуществами и только первым недостатком. В комментах ещё указали кучу недостатков. OpenID опять же всех их лишён. Единственный дополнительный недостаток OpenID в том, что это просто авторизация без дополнительной полезной функции, как в соц.сетях.

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