我终于开始工作了,所以我将回答我自己的问题,因为之前的答案很有帮助,但没有讲述整个故事。
Django-openid-auth https://launchpad.net/django-openid-auth实际上很容易设置和使用。 README 文件非常清楚。如果您只想使用标准谷歌帐户(即@gmail.com地址),那么您可以在settings.py中配置它:
OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'
但如果您想使用“google apps”帐户,即在您自己公司的域中托管的 gmail,那么情况会更复杂。我的详细信息来自这个问题 https://stackoverflow.com/questions/2313573/google-apps-login-in-django。要使用您的 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 http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains并报告回来。祝你好运。)所以你需要使用 adieu 的 python-openid 补丁,它可以在这里找到:http://github.com/adieu/python-openid http://github.com/adieu/python-openid
在现有的 python-openid 上安装它。现在应该可以了。
小心OPENID_USE_AS_ADMIN_LOGIN
自此设定requires您必须拥有一个“员工”或“超级用户”的 openid 用户帐户才能使用管理员,默认情况下不会发生这种情况。因此,您需要执行一个两步过程:启用 openid,使用您的 openid 登录以在 django 中创建一个帐户,然后使用您的旧管理员帐户将您自己的 openid 帐户标记为超级用户,然后禁用非 openid 管理员使用权。
还有一件事:您的域管理员可能需要为您的域启用 openid 登录,然后才能正常工作。控制点位于http://www.google.com/a/cpanel/example.com/SetupIdp http://www.google.com/a/cpanel/example.com/SetupIdp