Python Appengine上的社交身份验证有哪些不同的选项?它们如何比较?

Python Appengine上的社交身份验证有哪些不同的选项?它们如何比较?,python,google-app-engine,oauth,openid,facebook-authentication,Python,Google App Engine,Oauth,Openid,Facebook Authentication,[这个问题旨在捕获我的发现并检查它们的合理性-我将发布我的答案兜售套件,看看还有什么其他答案和评论出现。] 我花了一点时间试图了解(python)Appengine的不同社会身份验证选项。我对谷歌提供的认证机制如何与其他社会认证机制交互感到特别困惑。谷歌与第三方OpenID提供商进行了很好的整合,但一些最大的社交网络不是OpenID提供商(如facebook、twitter),这一事实使情况变得复杂。[请注意,facebook可以使用OpenID作为中继方,但不能作为提供商] 接下来的问题是:在

[这个问题旨在捕获我的发现并检查它们的合理性-我将发布我的答案兜售套件,看看还有什么其他答案和评论出现。]

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


接下来的问题是:在Appengine中,社会认证有哪些不同的选项?每个选项的优缺点是什么?

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

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

    • 优点:
      • 您可以通过Appengine提供的用户服务轻松检查谁已登录
      • 谷歌负责安全性,因此你可以非常确定它经过了良好的测试
    • 缺点:
      • 这只能与第三方OpenID提供商集成;目前无法与facebook/twitter集成
  • 使用已知框架(如tipfy或django)提供的社会身份验证机制

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

    • 优点:
      • 你可以把OpenID和OAuth的任何味道混合在一起
    • 缺点:
      • 您最有可能引入安全漏洞
      • 除非您有一点使用这些技术的经验,否则这可能是最耗时的
  • 进一步说明:

    • 很可能每个人最终都会使用OpenID,然后标准的Google身份验证应该在任何地方都可以使用
    • 第一个选项允许你在谷歌的身份验证出现问题时指责谷歌;第二个选项要求您承担更多的责任,但仍然允许您在出现问题时使用广泛使用的解决方案,而最后一个选项则要求您承担所有责任
    • 大多数问题都与会话管理有关——在案例1中,谷歌负责所有的会话管理,开发人员看不到它;在第2种情况下,会话管理由框架处理,在第3种情况下,您必须设计自己的会话管理