我最近签订合同,开发一个需要Facebook-Connect作为其身份验证机制之一的应用程序.
在我的Facebook-Connect解决方案上工作,我意识到它正在实施单点登录身份验证方案,如果您登录到一个网站,您将登录到所有这些网站.就个人而言,我并不喜欢这种方法,并且发现在尝试通过您(开发人员)可以控制的单个进程来汇集所有身份验证系统时,很难(并非不可能)使用该方法.我还认为它引入了不必要的安全问题(请参阅Internet部署的风险),只是为了略微改善用户体验.
在研究与该技术合作的策略时,我注意到博客圈几乎已经将Facebook-Connect作为认证的圣杯,与其他人的观点相呼应,并强烈要求"OpenID过于复杂".与此同时,我还没有真正看到许多着名的开发人员和安全专家就此事提出旗帜或发表意见.我对OpenID的唯一体验是使用StackOverflow和相关站点.我一开始很难理解它是什么,但是一旦我意识到我可以使用我的google凭据登录,经验证明非常顺利.
我是偏执狂还是错过了每个人都得到的东西?Facebook-Connect真的是OpenID的更好替代品,还是每个人都在喝别人的Kool Aid?
编辑:
在做完这个之后,我确认facebook-connect登录方案不太理想.整个iframe/js/cookie/reload的东西很难看,很容易出问题.将fb登录集成到现有的身份验证系统本身就是一种练习.你必须做出一些妥协.我必须写一篇完整的文章来解释我是如何做到的.
Facebook似乎对我的单点登录有点痴迷.大多数人都不知道facebook为他们自己的网站启用了OpenID,但即使他们实现它的方式也是模仿SSO并使其有点无意义.我认为OpenID应该工作的方式:你去一个新的网站,如果你有一个OpenId帐户,把网址,登录到你的提供商,你就在.你可以继续完成其他信息.
Fb不预先为您提供OpenID登录.相反,您首先必须注册并登录,然后转到帐户设置,在链接帐户下,选择一个OpenID提供商.但是,与了解要点的StackOverflow不同,如果您指示您的提供商记住该设置,则Facebook仅允许您使用您的OpenID登录.为什么?它使它更像SSO.如果你没有检查要求记住的谷歌盒子,OpenID在facebook上不起作用.
除了登录,facebook-connect一般工作,但仍有许多角落要圆.让我拉扯头发并诅咒那个api的一些事情:
我确定这个清单并没有就此结束,但从我的头脑中来看它就是这样.
警告:强烈意见如下.
是的,他们正在喝Kool-Aid.Facebook Connect是一个专有的,依赖于提供商的单点登录等等.Facebook倒闭,或者被认为不值得信任,而且你已经被软化了.
OpenID绕过了那个.它目前有重大的用户体验问题,但长期来看它是一个更好的解决方案,因为它可以使系统免于依赖(并过滤所有流量)单个提供商.此外,它的规范和实现似乎更清洁 - 没有这个JavaScript/IFrame的东西.只是简单的HTTP请求和重定向.这也为您提供了更好的浏览器兼容性.
Facebook Connect修复了用户体验问题,但却牺牲了浏览器支持和提供商选择.这是一个短期的实用胜利,但我认为长期来看并不是一个好主意.