Какая библиотека openid / oauth для подключения проекта django к аккаунтам Служб Google?

30

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

Я вижу много похожих библиотек там, чтобы подключить систему django auth к внешним системам входа:

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

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

  • 0
    Google отказался от поддержки OpenID, и большинство ответов больше не работают (или перестанут работать в апреле 2015 года). Смотрите этот вопрос: stackoverflow.com/questions/27040648/…
Теги:
openid
google-openid

5 ответов

17
Лучший ответ

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

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, так как он требует, чтобы у вас была открытая учетная запись пользователя, которая является "персоналом" или "суперпользователем", чтобы использовать admin, который не будет выполняться по умолчанию. Таким образом, вам нужно сделать 2-шаговый процесс включения openid, войти в систему с вашим openid, чтобы создать учетную запись в django, а затем использовать свою старую учетную запись администратора, чтобы пометить свою собственную учетную запись openid как суперпользователь, а затем отключить администратор non-openid доступ.

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

  • 1
    Вы сэкономили 2 дня + ценность работы для меня. Забота о пиве ?!
3

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

1

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

0

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

НТН

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню