10 python django google-apps django-openid-auth
我正在开发一个与谷歌应用程序集成的django应用程序.我想让用户使用他们的谷歌应用帐户登录(谷歌托管域中的帐户,而不是谷歌帐户),以便他们可以访问他们的文档,日历和诸如此类的东西.
为了做到这一点,我下载并开始使用django_openid_auth(因此,python-openid).
首先,为了测试它,我在我的设置中使用了这个url:
OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'
Run Code Online (Sandbox Code Playgroud)
有了这个,我设法将用户重定向到谷歌帐户页面登录,然后返回到我自己的域,谷歌人员描述的身份验证周期已成功完成.但是,登录谷歌帐户对我来说没有什么用处,因为我希望在托管域中拥有谷歌应用程序帐户的用户 - 但不是谷歌帐户 - 登录.为了做到这一点,我阅读了关于发现"发现托管域的OpenID端点"的谷歌文章,并将上述设置更改为:
OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=<my-domain>.com'
Run Code Online (Sandbox Code Playgroud)
- 显然,这<my-domain>是我的实际领域;)
但是后端回复了以下消息:
OpenID身份验证失败:来自身份URL主机的HTTP响应状态不是200.获得状态404
调试了一下,我设法找出在python-openid的代码(2.2.4版本)是曲解从谷歌的响应,但我在亏损是相当这里.
我已经看到了我自己的域名工作的认证以socialwok.com和puffypoodles.com所以我很肯定,我的谷歌的身份验证周期Apps网域的作品,但不知何故,蟒蛇,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的补丁版本,对我有用.
如果需要,我可以在清理后发布我的代码.这是一个快速补丁,所以不要期望太多:)
| 归档时间: |
|
| 查看次数: |
6038 次 |
| 最近记录: |