Подтвердить что ты не робот

Facebook-connect или OpenID? С точки зрения разработчика

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

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

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

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


EDIT:

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

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, чтобы вытащить картинки друзей со своего сервера. Это будет работать для нескольких запросов, а затем перестанет работать вообще. Затем я решил вытащить данные непосредственно из своего db, используя свой язык запросов facebook (fql) и создать собственную разметку в html. работал 100%. Мой совет вам, если вы настоящий разработчик, не покупайте мантру "все просто", которую facebook пытается накормить всех, это не так. В дополнение к ознакомлению с вашей платформой программирования facebook client api (PHP, Python, Java и т.д.), Инвестируйте в изучение того, что вы можете извлечь из своего сервера, используя fql и что вы можете сделать в браузере с JS Client API (не путать с fbjs). Вы вполне можете найти, что более поздние 2 - это все, что вам нужно для выполнения большинства вещей.

Я уверен, что список не заканчивается там, но с моей вершины здесь.

4b9b3361

Ответ 1

Предупреждение: последующие сильные отзывы.

Да, они пьют Kool-Aid. Facebook Connect - это проприетарный, основанный на провайдерах Single Sign-On плюс больше. Facebook идет вниз, или считается недостойным доверия, и вы влюбились.

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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