谷歌应用引擎中的自定义身份验证(python)

时间:2009-06-20 01:56:49

标签: python google-app-engine authentication

有没有人知道或知道我可以学习如何使用python和google app引擎创建自定义身份验证过程?

我不想使用Google帐户进行身份验证,并且希望能够创建自己的用户。

如果不是专门针对谷歌应用引擎,有关如何使用python和django实现身份验证的任何资源?

10 个答案:

答案 0 :(得分:20)

django 1.0今天在Google AppEngine上更新了。但你可以像其他任何你不能真正使用会话的用户身份验证一样,因为它非常庞大。

http://gaeutilities.appspot.com/

中有会话实用程序

http://gaeutilities.appspot.com/session

http://code.google.com/p/gaeutilities/

或者,

您必须创建自己的用户表并对密码进行哈希或加密,然后可能创建一个令牌系统,该系统仅使用令牌哈希或uuid cookie来模仿会话(会话只是cookie)。

我已经使用基本的google.webapp请求和响应标头实现了一些。我通常使用uuids作为主键作为用户ID,然后加密用户密码并将其电子邮件用于重置。

如果您想授权用户外部访问数据,您可以查看OAuth以获取应用程序访问权限。

如果您只想按ID存储数据并且面向消费者,可能只需使用openid就像stackoverflow一样,然后将配置文件数据附加到该标识符,如django profiles(http://code.google.com/p/openid-selector/)。

django 1.0今天刚刚出现在GAE上,但我认为存在相同的问题,没有会话,你必须真正创建自己的存储会话数据。

答案 1 :(得分:10)

这是一个非常开箱即用的解决方案,效果很好: http://code.scotchmedia.com/engineauth/docs/index.html

它内置支持Facebook,Google +,Twitter,LinkedIn,GitHub和OpenId(通过Google App Engine)。

您只需将用户重定向到/auth/facebook/auth/google,依此类推(此网址可自定义)。

它还实现了两个类:UserUserProfile,每个User都是您应用中的唯一帐户,可能与一个或多个UserProfiles相关 - 哪一个是一个独特的User必须登录到您的应用程序的登录策略(如果不清楚,那是因为我的英语非常糟糕,docs解释得更好)。

P.S。:文档不是很完整,但代码非常简单,简短且不言自明。此外,还有一个讨论here,其中作者提供了对困惑和开始用户的问题的各种答案。

答案 2 :(得分:8)

OpenID consumer(优秀的“应用引擎示例”开源项目的一部分)目前正在运行(尽管其README中的警告已经过时),并允许您使用OpenID进行用户登录。< / p>

django的auth也可用,例如this project(至少users部分,不一定是groupspermissions,尽管他们可能随时让他们工作。)

答案 3 :(得分:8)

我看到每当您搜索“自定义登录应用引擎”时,这会在Google中弹出 我决定给出一个一直为我服务的答案。 这是示例应用程序 https://github.com/fredrikbonander/Webapp2-Sample-Applications

这使用

  1. webapp2(已在GAE 1.6.2中)
  2. Jinja2(已在GAE 1.6.2中)
  3. Webapp2似乎是GAE的最佳选择(建立在webapp之上,因此未来证明)所以使用GAE原生支持的框架进行身份验证是一个好主意。有许多 其他框架,但必须在用户部分进行大量的黑客攻击才能使它们正常工作。对于想要建立“稳定”网站的人来说,这种黑客攻击工作是非常不受欢迎的。

    我也意识到现在有对GAE的SQL支持,本机将支持django。 我们都知道django内置了用户认证系统。虽然,我认为,尤其是在云世界,NoSQL是未来。我相信NoSQL将来会有一个像django一样好的框架。但那就是我,你的要求可能会要求其他东西。

答案 4 :(得分:7)

这是一篇优秀且相对较新的(2013年1月)博客文章,标题为User authentication with webapp2 on Google App Engine,相关GitHub repo: abahgat/webapp2-user-accounts

答案 5 :(得分:4)

看看Django的app-engine-patch(我从你的问题中假设你喜欢的框架)。它提供了gae身份验证。

或者,看看web2py。它是一个基于Python的框架,适用于GAE和Relational数据库。它内置的Auth对象提供用户,组和权限。

它并没有提供对BigTable的无限制访问,而是提供关系功能的子集(例如BigTable不支持连接,而web2py不支持BigTable模型)。

Web2py和Django社区正在讨论对BigTable的支持。

答案 6 :(得分:2)

我用谷歌搜索了一段时间用于app引擎的自定义身份验证系统。我最终决定在应用引擎上运行烧瓶。我使用这个样板文件在app引擎https://github.com/kamalgill/flask-appengine-template/上运行烧瓶,这个烧瓶版权扩展http://pypi.python.org/pypi/Flask-Auth/附带即插即用谷歌应用引擎支持。我认为flask也有一个非常好的oAuth库,所以最终添加facebook和twitter登录将很容易

答案 7 :(得分:1)

除了所有其他好的答案之外,我还要补充一点FacebookTwittergithub都提供OAuth机制,您可以将其用作交钥匙认证支持你的应用。

答案 8 :(得分:1)

看看我正在使用coto进行的这个项目:https://github.com/coto/gae-boilerplate它包括一个功能齐全的自定义身份验证系统等等。

答案 9 :(得分:1)

另一个选项是Beaker module。 客户端会话的AES加密很不错。