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

Я изучаю варианты использования 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?

Заранее благодарим за помощь!

Ответы

Ответ 1

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

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

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

[EDIT - я отчасти откажусь от этого] Библиотека pysaml2 имеет некоторую активность в области разработки и выглядит довольно полной от беглого взгляда. Он использует двоичный файл xmlsec1 непосредственно для подписей и шифрования и поэтому не полагается на устаревшие привязки. Вероятно, это лучший выбор для использования SAML2 непосредственно на python в данный момент.

Ответ 2

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

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

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

Ответ 3

Доступен модуль 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/transaction.log должен сообщить вам, какие атрибуты будут выпущены.