Какая библиотека openid / oauth для подключения проекта django к аккаунтам Служб Google? - PullRequest
30 голосов
/ 30 июня 2010

Я работаю над проектом внутренней сети django (не использующим GAE) для компании, которая использует Google Apps для входа в систему.Поэтому я бы хотел, чтобы мои пользователи могли войти в мой проект django, используя свои учетные записи Google.OpenID кажется подходящим, хотя, возможно, Oauth тоже может сработать?

Я вижу множество библиотек с одинаковыми именами для подключения системы аутентификации django к внешним системам входа в систему:

Вот что я хотел бы сделать с интеграцией: пользователи должны входить в систему со своими учетными записями Google, а не с родной системой django.Сохраните модель разрешений django для таких вещей, как система администратора.Поэтому я думаю, что это означает автоматическое создание новой пользовательской записи в django при первом входе новой учетной записи, которую мы не видели до входа в систему.

Может кто-нибудь с опытом использования любого из этих проектов посоветовать мне, какой из них лучше всего подойдет?Или просто совет, какие из них наиболее активны / функциональны, если вы их пробовали?Спасибо!

Ответы [ 5 ]

17 голосов
/ 24 июля 2010

Я наконец получил эту работу, поэтому я отвечу на свой вопрос, так как предыдущие ответы здесь были полезны, но не рассказывают всю историю.

django-openid-auth на самом деле довольно прост в настройке и использовании. Файл README очень понятен. Если вы просто хотите использовать стандартные учетные записи Google (например, адреса @ gmail.com), то вы можете настроить его в settings.py с помощью:

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

Но если вы хотите использовать учетную запись "Google Apps", т. Е. Размещать gmail на домене своей компании, тогда это будет сложнее. Я получил свои данные от этого вопроса . Чтобы использовать свои аккаунты в приложениях Google, настройте файл 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

В будущем это может сработать, но сегодня, вероятно, не сработает. Проблема в python-openid, на который опирается django-openid-auth. Стандартная сборка python-openid не понимает некоторые расширения протокола, которые использует Google. (Зачем 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, которая является «сотрудником» или «суперпользователем», чтобы использовать admin, что по умолчанию не происходит. Таким образом, вам нужно будет выполнить двухэтапный процесс включения openid, войти в систему с помощью openid, чтобы создать учетную запись в django, затем использовать старую учетную запись администратора, чтобы пометить свою учетную запись openid как суперпользователя, и затем отключить не-openid администратора. доступ.

Еще одна вещь: администратору вашего домена может потребоваться включить openid логин для вашего домена, прежде чем это сработает. Управление на http://www.google.com/a/cpanel/example.com/SetupIdp

3 голосов
/ 01 июля 2010

Я использовал django-openid-auth . Работает нормально, может создать учетную запись пользователя при подписании в первый раз. Вы также можете связать вход openid с учетной записью пользователя в админ-панели django.

1 голос
/ 15 октября 2010

Я знаю, что это поздний ответ, но я делаю подобные вещи, и я только что обнаружил django-socialregistration . в основном это OAuth, OpenID, Facebook Connect и т. д. В отличие от некоторых других опций, он, похоже, активно разрабатывается и используется многими проектами.

0 голосов
/ 06 июля 2010

Все они практически идентичны.Мне нравится django-authopenid .Он имеет отличную документацию и чрезвычайно прост в использовании.Он будет делать именно то, что вы хотите, и лучше, чем django-openid (единственный, который я пробовал).

HTH

0 голосов
/ 02 июля 2010

Мне понравилось, что Социальная регистрация Django позволила мне довольно легко подключить аккаунты Google, Facebook, Yahoo и любой другой сайт OpenID. Вам просто нужно дать провайдеру ссылку в виде:

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

...