哪个openid/oauth库将django项目连接到Google Apps帐户?

Leo*_*opd 30 python openid django google-openid

我正在为使用Google Apps登录的公司开发Intranet django项目(不使用GAE).所以我希望我的用户能够使用他们的谷歌帐户登录登录我的django项目.OpenID看起来很合适,虽然Oauth可能也有用吗?

我看到很多类似命名的库将django的auth系统连接到外部登录系统:

以下是我要对集成进行的操作:让用户使用他们的Google帐户登录,而不是使用本机django系统.保留django的管理系统之类的权限模型.所以我认为这意味着在我们登录之前没有看到的新帐户第一次在django中自动创建新的用户记录.

任何有这些项目经验的人都可以告诉我哪种方法效果最好?或者只是在您尝试过时最有效/最有效的建议?谢谢!

Leo*_*opd 17

我终于得到了这个工作,所以我会回答我自己的问题,因为之前的答案在这里很有帮助,但不能讲述整个故事.

django-openid-auth实际上很容易设置和使用.README文件非常清楚.如果您只想使用标准的Google帐户(即@ gmail.com地址),请在settings.py中配置它:

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'
Run Code Online (Sandbox Code Playgroud)

但是,如果您想使用"谷歌应用"帐户,即在您自己公司的域中托管Gmail,那么它就更复杂了.我从这个问题得到了我的细节.要使用您的Google Apps应用帐户,请将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
Run Code Online (Sandbox Code Playgroud)

在未来,这可能会起作用,但今天可能不会.问题出在django-openid-auth所依赖的python-openid中.python-openid的标准版本不了解谷歌正在使用的一些协议扩展.(为什么谷歌需要扩展协议?深入了解http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains并报告回来.祝你好运.所以你需要使用adieu的补丁到python-openid,可以在这里找到:http: //github.com/adieu/python-openid

在现有的python-openid上安装它.现在它应该工作.

请注意OPENID_USE_AS_ADMIN_LOGIN设置,因为它要求您拥有一个openid用户帐户,即'staff'或'superuser'来使用admin,默认情况下不会发生这种情况.因此,您需要执行启用openid的两步过程,使用openid登录以在django中创建帐户,然后使用旧的管理员帐户将您自己的openid帐户标记为超级用户,然后禁用非openid管理员访问.

还有一件事:您的域管理员可能需要为您的域启用openid登录才能生效.该控件位于http://www.google.com/a/cpanel/example.com/SetupIdp