我正在为一家使用Google登录的公司开发一个内部网django项目(不使用GAE)。因此,我希望我的用户能够登录我的django项目,使用他们的google帐户登录。OpenID似乎是合适的,尽管也许Oauth也能工作吗?
我看到许多类似名称的库将django的auth系统连接到外部登录系统:
下面是我想要做的集成:让用户使用他们的google帐户登录,而不是使用本地django系统。将django的权限模型保留在管理系统等方面。因此,我认为这意味着在django中自动创建一个新的用户记录,这是我们在登录之前还没有看到的新帐户。
任何有使用这些项目经验的人都能告诉我哪一个项目最有效吗?或者,如果你尝试过哪一种方法是最活跃的/最实用的?谢谢!
发布于 2010-07-23 23:14:25
我终于成功了,所以我会回答我自己的问题,因为前面的答案很有帮助,但不要说出全部的故事。
django-openid-auth实际上很容易设置和使用。自述文件非常清楚。如果您只想使用标准的google帐户(即@gmail.com地址),那么您可以在settings.py中配置它:
OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'但是如果你想使用一个“谷歌应用程序”帐户,即在你自己公司的域名上托管gmail,那么它就更复杂了。我从这个问题那里得到了我的详细信息。若要使用谷歌应用程序帐户,请将settings.py配置为:
OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=example.com'
# replace example.com with your hosted google apps domain在未来,这可能只是起作用,但今天它可能行不通。问题在于python,django-openid-auth所依赖的。python的标准构建不理解google正在使用的一些协议扩展。(为什么谷歌需要扩展协议?翻查http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains并向后报告。祝你好运。)因此,您需要使用adieu的补丁到python,它可以在这里获得:http://github.com/adieu/python-openid
在您现有的python上安装它。现在该起作用了。
小心OPENID_USE_AS_ADMIN_LOGIN设置,因为它要求您有一个openid用户帐户,即“staff”或“superuser”来使用admin,这在默认情况下不会发生。因此,您需要执行一个2步的过程,启用openid,使用openid登录在django中创建一个帐户,然后使用旧的管理帐户将您自己的openid帐户标记为超级用户,然后禁用非openid管理访问。
还有一件事:您的域管理员可能需要为您的域启用openid登录才能工作。控件位于http://www.google.com/a/cpanel/example.com/SetupIdp
发布于 2010-07-01 13:10:44
我用过django-openid-auth。工作正常,可以在第一次签名时创建用户帐户。您还可以将openid登录与django管理面板中的用户帐户相关联。
发布于 2010-10-15 08:02:12
我知道这是一个迟来的答案,但我正在做类似的事情,我刚刚发现了django-社会登记。它基本上包括OAuth、OpenID、Facebook等。与其他一些选项不同,它似乎是被许多项目积极开发和使用的。
https://stackoverflow.com/questions/3145453
复制相似问题