Appengine的社交认证选项有哪些?它们如何比较?
[这个问题是为了记录我的发现并进行自我检查 - 我会很快给出我的答案,看看其他人有什么回答和评论。]
我花了一些时间来了解(python)Appengine中不同的社交认证选项。我特别困惑的是,谷歌提供的认证机制是如何与其他社交认证机制互动的。事情变得复杂,因为谷歌与第三方OpenID提供商的整合很好,但一些最大的社交网络并不是OpenID提供商(比如Facebook和Twitter)。[注意,Facebook可以作为中介使用OpenID,但不是提供者。]
那么问题就是:在Appengine中有哪些不同的社交认证选项,每种选项的优缺点是什么?
1 个回答
11
在我研究这个问题时,我发现基本上有三种选择:
使用谷歌的认证机制(包括通过OpenID的联合登录)
- 优点:
- 你可以通过Appengine提供的用户服务轻松检查谁已经登录
- 谷歌负责安全性,所以你可以放心,它经过了充分的测试
- 缺点:
- 目前只能与第三方OpenID提供商集成,无法与Facebook或Twitter集成
- 优点:
使用像tipfy或django这样的知名框架提供的社交认证机制
- 优点:
- 这些可以与所有主要的社交认证服务集成
- 它们使用广泛,所以通常比较稳定,测试也比较充分
- 缺点:
- 虽然可能经过良好测试,但可能没有持续维护
- 它们是更大框架的一部分,你可能需要先熟悉这个框架才能部署你的应用
- 优点:
自己开发社交认证
- 优点:
- 你可以随意组合各种OpenID和OAuth的方式,随你喜欢
- 缺点:
- 你很可能会引入安全漏洞
- 如果你对这些技术没有经验,这可能是最耗时的选择
- 优点:
进一步说明:
- 大家可能最终都会转向OpenID,这样谷歌的认证就可以在任何地方使用
- 第一种选择如果认证出现问题,可以指责谷歌;第二种选择则需要你承担更多责任,但在出现问题时仍然可以说你使用的是广泛使用的解决方案,而最后一种选择则完全由你来承担责任
- 大多数问题都围绕会话管理展开——在第一种情况下,谷歌负责所有会话管理,对开发者来说几乎是看不见的;在第二种情况下,会话管理由框架处理,而在第三种情况下,你需要自己设计会话管理。