Google Apps OpenID登录Django App

问题描述:

我有一个为组织构建的django应用程序。但是,所有用户在组织的Google应用中都有帐户。我们一直为他们保留两个单独的用户帐户(谷歌应用程序和django应用程序),这不是很整洁。他们的django用户名与他们的谷歌应用用户名(@domain.com之前的部分)相同。Google Apps OpenID登录Django App

我想简单地更改我的django应用程序的登录页面,以便重定向到Google应用程序进行身份验证(即,openid类型登录)。此外,当他们登录时,我希望它以相同的用户名返回用户,以便现有用户登录到他们原来的帐户(因为他们有保存在这些帐户下的东西)。新用户只需要用该用户名创建一个新的django帐户。不知道是否有人熟悉googleappsauth。它是一个允许openid登录到谷歌应用程序域的django模块。这对我来说似乎很完美。但是,它告诉我我需要定义一个openid端点。文档似乎并没有表明这是必需的,但我不是很熟悉OpenID,所以我有点卡住了?

GOOGLE_OPENID_ENDPOINT = 'https://www.google.com/accounts/o8/ud'

要获得谷歌OpenID端点,通过发送GET或HEAD HTTP请求https://www.google.com/accounts/o8/id.当使用GET执行发现,我们建议您将接受头application/xrds+xml。谷歌返回一个包含OpenID提供商端点URL.The端点地址的XRDS文档被注释为:

<Service priority="0"> 
<Type>http://specs.openid.net/auth/2.0/server</Type> 
<URI>{Google's login endpoint URI}</URI> 
</Service> 

来自:code.google.com

您还可以使用:

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

然而,是意识到这会导致一些问题,如果你使用python-openid。修补程序are available