繁体   English   中英

Google应用登录django

[英]Google apps login in django

我正在开发一个与谷歌应用程序集成的django应用程序。 ) so they can access their docs, calendar, and whatnot. 我想让用户使用他们的谷歌应用帐户登录(谷歌托管域中的 ),以便他们可以访问他们的文档,日历和诸如此类的东西。

为了做到这一点,我下载并开始使用django_openid_auth(因此,python-openid)。

首先,为了测试它,我在我的设置中使用了这个url:

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'

有了这个,我设法将用户重定向到谷歌帐户页面登录,然后返回到我自己的域,谷歌人员描述的身份验证周期已成功完成。 但是,登录谷歌帐户对我来说没有什么用处,因为我希望在托管域中拥有谷歌应用程序帐户的用户 - 但不是谷歌帐户 - 登录。 为了做到这一点,我阅读了关于发现“发现托管域的OpenID端点”的谷歌文章,并将上述设置更改为:

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=<my-domain>.com'

- 显然, <my-domain>是我的实际域名;)

但是后端回复了以下消息:

OpenID身份验证失败:来自身份URL主机的HTTP响应状态不是200.获得状态404

稍微调试一下,我设法发现python-openid(2.2.4版)中的代码是误解谷歌响应的代码,但我在这里很茫然。

我已经看到我自己的域中的身份验证工作在socialwok.com和puffypoodles.com所以我很确定我的谷歌应用程序域的auth循环工作,但不知何故python-openid似乎无法完成它(但是,而且我重申,它适用于普通的旧谷歌帐户)。

我应该尝试修复python-openid,还是有其他方法来解决这个问题? 有没有人成功地在纯django应用程序( 不是谷歌应用程序引擎 )中使用谷歌应用程序登录?

根据http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains,Google改变了IdP发现的方式,用户XRDS检查了一下Google Apps用户以http://example.com/openid?id=108441225163454056756格式开放,而无需要求用户构建自己的openid服务器。 对于小公司而言,如果他们使用Google Apps,人们就可以在他们的域名下使用少量域名。

这可能是一种很好的方法,因为人们可以使用他们的Google Apps帐户进行身份验证,他们仍然可以在自己的域下提供openid,以便将来更改身份验证后端。 它简单且可扩展,但遗憾的是它尚未成为标准。 所以,如果你使用像python-openid这样的标准库,你会遇到一些问题。

要解决这些问题,你必须自己修补python-openid以遵循谷歌的方法。

之前我遇到过同样的问题,我有一个python-openid v2.1.1的补丁版本,对我有用。

如果需要,我可以在清理后发布我的代码。 这是一个快速补丁,所以不要期望太多:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM