Facebook-соединение или OpenID? С точки зрения разработчика - PullRequest
19 голосов
/ 29 августа 2009

Недавно я получил контракт на работу с приложением, которое требует Facebook-Connect в качестве одного из механизмов аутентификации.

Работая над своим решением Facebook-Connect, я понимаю, что оно реализует схему аутентификации с использованием единого входа, при которой, если вы входите на один веб-сайт, вы входите на все из них. Лично я не люблю этот подход и нахожу, что с ним трудно (не невозможно) работать при попытке направить все системы аутентификации через один процесс, над которым вы (разработчик) имеете некоторый контроль. Я также думаю, что это вносит ненужные проблемы безопасности (см. Риски развертывания Интернета) только для того, чтобы немного улучшить пользовательский опыт.

Исследуя стратегии работы с технологией, я заметил, что в блогосфере есть только помазанный Facebook-Connect, как священный грааль аутентификации, повторяющий мнение друг друга и настойчиво заявляющий, что «OpenID слишком сложен». В то же время я не видел, чтобы многие выдающиеся разработчики и эксперты по безопасности поднимали флаги или высказывали свое мнение по этому вопросу. Мой единственный опыт работы с OpenID связан со StackOverflow и соответствующими сайтами. Мне тоже было трудно понять, что это было на первых порах, но как только я понял, что могу войти в систему со своими учетными данными Google, опыт оказался действительно гладким.

Я параноик или скучаю по тому, что у всех есть? Является ли Facebook-Connect действительно лучшей альтернативой OpenID, или все пьют чью-то помощь Kool?


EDIT:

Поработав над этим, я подтверждаю, что схема входа в Facebook-connect не идеальна. Вся вещь iframe / js / cookie / reload ужасна и может легко стать проблематичной. Интеграция fb login в существующую систему аутентификации сама по себе является упражнением. Вам придется пойти на некоторые компромиссы. Мне нужно написать еще одну статью, чтобы объяснить, как я это сделал.

Мне кажется, что Facebook немного помешан на единой регистрации. Большинство людей не знают, что у Facebook есть OpenID для их собственного сайта, но даже способ, которым они это реализовали, состоит в том, чтобы эмулировать SSO и делает его немного бессмысленным. Я думал, что OpenID должен работать: вы переходите на новый веб-сайт, если у вас есть учетная запись OpenId, вы вводите URL-адрес, входите в систему своего провайдера и вы в нем. Затем вы можете перейти к дополнительной информации.

Fb не предлагает вам вход в OpenID заранее. Вместо этого сначала необходимо зарегистрироваться и войти в систему, затем перейти к настройкам учетной записи и в разделе «Связанные учетные записи» выбрать поставщика OpenID. Однако, в отличие от StackOverflow, который понимает суть, Facebook позволяет вам войти в систему только с вашим OpenID, если вы попросите своего провайдера запомнить этот параметр. Зачем? Это делает его более похожим на SSO. Если вы не установите флажок Google, который просит запомнить, OpenID не работает на Facebook.

Логин в стороне, facebook-connect в целом работает, но есть еще много углов для раунда. Несколько вещей, которые заставили меня дернуть себя за волосы и проклясть в этом API:

  • документация на Facebook разбросана и неправильно оптимизирована. В течение первого часа его открытия в браузере откроется не менее 10 вкладок. Если / когда вы натолкнетесь на интересные темы, которые, по вашему мнению, могут быть полезны в будущем, убедитесь, что правильно добавили их в закладки, не полагайтесь на навигацию, чтобы найти их снова, потому что иногда ключевые статьи зарыты глубоко. Я знаю, что вики-подход к документированию API в последнее время сделал много проектов ленивыми, но обычно это Facebook. Они должны иметь возможность нанять команду для предоставления надлежащих руководств пользователя. Итак, не забудьте иметь хорошую папку закладок на Facebook, прежде чем начать.
  • В API есть много методов, удачи в поиске примера их использования, вы должны полагаться на инстинкт.
  • много раз, когда что-то не работает, как вы хотите, никто не знает почему. При посещении страниц форума объяснения даются в виде гипотез и слухов. например Почему при входе в систему у некоторых приложений появляются всплывающие окна входа, а у других - модальный диалог js? Можно ли контролировать это поведение? никто не уверен. Ходят слухи, что Facebook проводит какое-то тестирование, не сообщая никому.
  • не все работает как рекламируется. Т.е. вы можете столкнуться с тем, что вас поощряют использовать функцию, тратить драгоценное время на ее изучение, реализацию, отладку, а затем обнаруживать, что она не работает с facebook-connect, когда вы помещаете ее в обработчик исключений try / catch. например feed.publishUserAction .
  • Facebook слишком старается быть удобным для пользователя. Они тратят впустую ценные ресурсы, толкая автоматические API, которые работают только половину времени (xfbml), вместо того, чтобы поощрять разработчиков использовать свои с трудом заработанные знания, используя более простые вещи, которые, как доказали, работают большую часть времени (псевдо sql + html). например Я потратил время, пытаясь использовать комбинацию ajax / xfbml / js, чтобы вытащить фотографии друзей со своего сервера. Это будет работать на пару запросов, а затем вообще перестанет работать. Затем я решил вытащить данные непосредственно из их базы данных, используя их язык запросов facebook (fql), и создать собственную разметку в html. работал на 100%. Мой совет, если вы настоящий разработчик, не покупайте мантру «все просто», которую Facebook пытается накормить всем, это не так. В дополнение к ознакомлению с API-интерфейсом клиента вашей программной платформы для Facebook (PHP, Python, Java и т. Д.), Вложите средства в изучение того, что вы можете извлечь из их сервера напрямую, используя fql , и что вы можете делать в браузере с помощью JS Client API (не путать с fbjs). Вы можете обнаружить, что более поздние 2 - это все, что вам нужно для большинства вещей.

Я уверен, что список на этом не заканчивается, но от макушки головы вот он.

Ответы [ 3 ]

6 голосов
/ 02 сентября 2009

Внимание: следуют сильные мнения.

Да, они пьют Kool-Aid. Facebook Connect - это проприетарная, зависящая от поставщика система единого входа, а также многое другое. Facebook перестает работать или считается недостойным доверия, и вы попадаете.

OpenID обходит это. В настоящее время у него возникают серьезные проблемы с пользовательским интерфейсом, но в долгосрочной перспективе это лучшее решение, поскольку оно освобождает систему от зависимости (и фильтрации всего трафика) от одного поставщика. Кроме того, его спецификация и реализация кажутся намного чище - ничего из этого JavaScript / IFrame. Просто простые HTTP-запросы и перенаправления. Это также дает вам лучшую совместимость с браузерами.

Facebook Connect исправил проблему взаимодействия с пользователем, но за счет поддержки браузера и выбора провайдера. Это краткосрочная прагматическая победа, но я думаю, что в долгосрочной перспективе это не очень хорошая идея.

2 голосов
/ 29 августа 2009

Схема единого входа довольно распространена в настоящее время в основных приложениях. Если вы входите в Gmail, вы входите во все продукты Google. Я думаю, что это имеет смысл в некотором смысле, особенно если приложения взаимосвязаны, являются основной услугой, и у провайдера работают лучшие специалисты по безопасности, работающие за кулисами.

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

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

Представьте себе, если вы смогли войти в систему, используя свой идентификатор Google.

Пока я думаю, что вам не нужно испытывать неудобства с Facebook-Connect, но я рекомендую OpenID, хотя сам еще не использую его :) ( вялость )

0 голосов
/ 02 сентября 2009

Вы смотрели на Google Friend Connect ? Он похож на Facebook Connect, но основан на Open ID, поэтому не является собственностью Google. Кажется, это также решает проблемы взаимодействия с пользователем Open ID.

rpxnow.com также неплохо справляется с решением проблемы взаимодействия с пользователем Open ID.

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