Джанго и Шибболет - PullRequest
       16

Джанго и Шибболет

16 голосов
/ 21 октября 2011

Я изучаю варианты использования Shibboleth в развертывании Django. Из того, что я нашел, все выглядит немного скудно. Кто-нибудь может прокомментировать следующее?

  • Кто-нибудь использует модуль django_shibboleth (см. http://code.arcs.org.au/gitorious/django/django-shibboleth/trees/1.1)? Если да, какой опыт у вас был с этим модулем?

  • Реализация SAML 2 для Django (например, django-saml2-sp) и Python в целом (например, pysaml2) представляется несколько экспериментальной и включает мало документации. Кто-нибудь знает стабильные решения SAML 2 для Django / Python?

Заранее спасибо за любую помощь!

Ответы [ 3 ]

9 голосов
/ 21 октября 2011

Я бы порекомендовал использовать Shibboleth Native SP (apache mod_shib).Он хорошо протестирован, имеет большую базу пользователей и очень стабилен.

Я быстро взглянул на модуль django_shibboleth , и похоже, что он зависит от mod_shib и не выполняет никаких SAML самостоятельно.В этом отношении этот модуль очень прост и, вероятно, работает хорошо.

Я не видел каких-либо полных (или в основном завершенных) реализаций Python SAML2, и ни одной из них, которые являются активным проектом.* Требования безопасности и криптографии xml - это боль в Python, и это, вероятно, способствует отсутствию библиотек.

[РЕДАКТИРОВАТЬ - Я отелю часть этого] Библиотека pysaml2 имеет некоторую активность в разработке и выглядит довольно полной с беглого взгляда.Он использует двоичный файл xmlsec1 напрямую для подписи и шифрования и, следовательно, не полагается на устаревшие привязки.Вероятно, это лучший выбор для использования SAML2 непосредственно в Python на данный момент.

3 голосов
/ 21 октября 2011

Хотя у меня нет опыта работы с Django + Shibboleth, у меня есть некоторые с «простым» Shibboleth.

Если ваш Apache правильно настроил mod_shibboleth, то его интеграция с веб-приложением относительно тривиальна.Проверьте модуль django_shibboleth, и вы увидите, что он не содержит такого большого количества кода.

В частности, если у вас уже запущен mod_shibboleth, не используйте стороннюю библиотеку SAML 2.Это приносит много ненужных сложностей.

2 голосов
/ 13 июня 2014

Доступен модуль django-shibboleth, который можно использовать для получения атрибутов из IdP и их сопоставления пользователям в системе аутентификации Django.Большая часть работы выполняется самим Shibboleth, и для сопоставления требуется только небольшой объем кода.

Упаковка доступна здесь.

linuxsoft.cern.ch / internal / repos/ai6-stable/x86_64/os/Packages/django-shibsso-0.1-1.noarch.rpm

или источник отсюда.

linuxsoft.cern.ch / internal / repos /ai6-stable / source / SRPMS / django-shibsso-0.1-1.src.rpm

Следуйте инструкциям Shibboleth для настройки местного поставщика услуг Shibboleth (SP) для использования с IdP.

В файле http.conf или в конфигурации своего приложения в conf.d создайте следующую запись:

<Location /shibboleth>
    AuthType shibboleth
    ShibRequireSession On
    ShibUseHeaders On
   require valid-user
</Location>

Это должно привести к тому, что URL-адреса / shibboleth будут перенаправлены на страницу входа в IdP.После успешного входа в систему будет возвращена страница 404.

Добавьте конфигурацию, заменив приложение именем вашего приложения.

<Location "/">
    SetHandler mod_python
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE app.settings
    PythonDebug Off
</Location>

Это должно привести к следующей ошибке после входа в систему.через URL / shibboleth.Текущий URL-адрес Shibboleth.sso / ADFS не соответствует ни одному из них.

Чтобы решить эту проблему, необходимо добавить в конфигурацию следующее.

<Location /Shibboleth.sso>
    SetHandler None
</Location>

/ var /log / shibboleth / Transactions.log должен сообщать вам, какие атрибуты освобождены.

...