Appengine的社会认证有哪些不同的选择 - 他们如何比较?

时间:2011-10-05 10:42:23

标签: python google-app-engine oauth openid facebook-authentication

[这个问题旨在捕捉我的发现和理智检查它们 - 我会提出我的答案toute套件,看看会出现其他答案和评论。]

我花了一点时间试图了解(python)Appengine的不同社交认证选项。我对Google提供的身份验证机制如何与其他社交身份验证机制进行交互感到特别困惑。由于谷歌与第三方OpenID提供商的良好整合,但一些最大的社交网络不是OpenID提供商(例如facebook,twitter),因此情况变得复杂。 [请注意,Facebook可以使用OpenID作为中继方,但不能作为提供商使用。)

接下来的问题是:在Appengine中社交认证的不同选择有哪些?每种选择的优缺点是什么?

1 个答案:

答案 0 :(得分:11)

在我对这个问题的研究中,我发现基本上有三种选择:

  1. 使用Google的身份验证机制(包括通过OpenID进行联合登录)

    • 优点:
      • 您可以通过Appengine提供的用户服务轻松查看登录的人员
      • Google会处理安全性,因此您可以确定它已经过充分测试
    • 缺点:
      • 这只能与第三方OpenID提供商集成;它目前无法与facebook / twitter集成
  2. 使用已知框架(如tipfy或django)提供的社交认证机制

    • 优点:
      • 这些可以与所有主要的社交认证服务集成
      • 它们被广泛使用,因此它们可能非常强大且经过良好测试
    • 缺点:
      • 虽然它们可能经过良好测试,但可能无法维护
      • 它们确实是一个更大的框架的一部分,您可能必须在部署应用程序之前熟悉它
  3. 滚动您自己的社交身份验证

    • 优点:
      • 你可以把OpenID和OAuth的任何风格混合起来哼唱你想要的
    • 缺点:
      • 您最有可能引入安全漏洞
      • 除非您在使用这些技术方面有一些经验,否则这可能是最耗时的
  4. 补充说明:

    • 很可能每个人都会最终转移到OpenID,然后标准的Google身份验证应该可以在任何地方使用
    • 如果他们的身份验证存在问题,第一个选项可让您指向Google;第二个选项对您施加更多责任,但仍允许您说如果出现问题并使用广泛使用的解决方案,并且最终选项将所有责任都归咎于您
    • 大多数问题都围绕着会话管理 - 在案例1中,Google会执行所有会话管理,而且开发人员看不到它;在案例2中,会话管理由框架处理,在第三种情况下,您需要设计自己的会话。