30

我正在为一家使用 Google Apps 登录的公司开发 Intranet django 项目(不使用 GAE)。所以我希望我的用户能够使用他们的谷歌帐户登录来登录我的 django 项目。OpenID 似乎很合适,虽然也许 Oauth 也可以工作?

我看到很多类似名称的库将 django 的身份验证系统连接到外部登录系统:

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

任何有使用这些项目经验的人都可以告诉我哪个最有效吗?或者只是建议您尝试过哪些最活跃/最实用?谢谢!

4

5 回答 5

17

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

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

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

但是,如果您想使用“谷歌应用程序”帐户,即在您自己公司的域中托管 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

将来这可能会起作用,但今天可能不会。问题出在 django-openid-auth 所依赖的 python-openid 中。python-openid 的标准构建不理解谷歌正在使用的一些协议扩展。(为什么 google 需要扩展协议?挖掘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 用户帐户,即“员工”或“超级用户”才能使用默认情况下不会发生的管理员。所以你需要做一个启用openid的两步过程,使用你的openid登录以在django中创建一个帐户,然后使用你的旧管理员帐户将你自己的openid帐户标记为超级用户,然后禁用非openid管理员使用权。

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

于 2010-07-23T23:14:25.620 回答
3

我用过django-openid-auth。工作正常,第一次签名时可以创建用户帐户。您还可以将 openid 登录与 django 管理面板中的用户帐户相关联。

于 2010-07-01T13:10:44.437 回答
1

我知道这是一个迟到的答案,但我正在做类似的事情,我刚刚发现django-socialregistration。它基本上是 OAuth、OpenID、Facebook Connect 等。与其他一些选项不同,它似乎被许多项目积极开发和使用。

于 2010-10-15T08:02:12.737 回答
0

我喜欢Django 社交注册让我可以很容易地插入 Google Accounts、Facebook、Yahoo 和任何其他 OpenID 站点。您只需将提供者作为链接提供,如下所示:

<a href="/socialregistration/openid/redirect/?openid_provider={{ 'http://yahoo.com'|urlencode }}"><img src="{{MEDIA_URL}}/images/yahoo.png"/></a>

于 2010-07-02T11:11:52.310 回答
0

它们几乎完全相同。我喜欢django-authopenid。它有很好的文档并且非常易于使用。它会完全按照您的要求做,并且比 django-openid 做得更好(这是我尝试过的唯一另一个)。

高温高压

于 2010-07-05T21:52:02.310 回答