SAML с аутентификацией Django

Я использую Django и nginx, размещенные на AWS. Я пытаюсь интегрироваться с университетом для аутентификации SAML, используя их idp. На SO есть много устаревших ответов, но есть ли что-нибудь более подходящее для текущих стандартов?

Многие из приложений, которые я видел, предназначены для django 1.2 и ниже. В частности, я ищу ресурсы, которые позволили бы мне более легко управлять аутентификацией SAML с помощью промежуточного программного обеспечения или чего-либо еще.

Вот некоторые вещи, которые я видел:

https://github.com/unomen/django-saml2-idp

https://github.com/WiserTogether/django-saml2-sp


person KVISH    schedule 26.03.2014    source источник


Ответы (4)


Проект, который я нашел, находится ниже:

https://bitbucket.org/lgs/djangosaml2/overview

Проект использует psaml2 для поддержки SAML. Pysaml2 можно найти здесь:

https://github.com/rohe/pysaml2

Имейте в виду, что djangosaml2 может не использовать последнюю версию pysaml2. Я протестировал его, и он работает нормально.

ОБНОВЛЕНИЕ

djangosaml2 работает с последней версией pysaml2, но не забудьте добавить эту строку, чтобы она работала:

SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'

Это должно быть в вашем settings.py.

person KVISH    schedule 28.03.2014
comment
Обновление: djangosaml2 не обновлялся более года, отсутствует поддержка Python3 и Django 1.9. - person Daniel Quinn; 26.02.2016
comment
Я использую его в производстве с django 1.9.4. Я смог внести изменения со своей стороны, чтобы поддержать его. Python 3 Я не тестировал его, поэтому не уверен в этом. - person KVISH; 21.03.2016
comment
@kvish, у меня вопрос об использовании djangosaml2 для получения метаданных, которые я не могу понять. Не могли бы вы помочь мне? Я разместил свой вопрос на djangosaml2 github - person mathiass; 20.09.2018
comment
Связанный проект больше не поддерживается. Однако форк, который поддерживается в очень хорошем состоянии, доступен на GitHub. - person humcat; 03.08.2020

SAML - это две стороны:

  • IDP -> сторона поставщика удостоверений -> то есть университет
  • SP -> Поставщик услуг -> т.е. ваше приложение

Похоже, это то, что вам нужно: https://github.com/WiserTogether/django-saml2-sp.

Вы должны принять во внимание, что SAML как стандарт сложен, поэтому вы можете столкнуться с проблемами при взаимодействии библиотеки с реализацией SAML в университете. Вам также нужно будет получить от них открытый ключ сертификата поставщика удостоверений и попросить их добавить ваше приложение на их стороне с определенным идентификатором объекта. И когда вы начинаете управлять парой из них, становится сложно.

Вы также можете попробовать что-то вроде Auth0 для обработки всех этих соединений SAML. Существует очень простой пример Python https://gist.github.com/woloski/8149412.

person woloski    schedule 27.03.2014
comment
Это работает, но я нашел более обновленный и ухоженный проект. - person KVISH; 28.03.2014
comment
Привет, КВИШ, я работаю над той же проблемой внедрения SAML SSO с проектом Django. Какое решение вы в конечном итоге использовали? - person Aman; 17.08.2015
comment
@Aman не уверен, видели ли вы это, но они ответили на свой вопрос и указали на djangosaml2. - person Jordan; 03.12.2015

Привет, я только что создал плагин аутентификации django saml2.

https://github.com/fangli/django-saml2-auth

Его довольно легко интегрировать с вашим провайдером SAML2, надеюсь, вам понравится.

person Felix    schedule 12.04.2016
comment
не могли бы вы поделиться примером, в котором вы использовали этот пакет - person MKRNaqeebi; 02.05.2019
comment
Я просто немного боролся с этим, это очень помогло нашему проекту. Получение зависимостей, отсортированных в нашем контейнере докеров, было немного сложной задачей, но как только мы прошли через это, это сработало как шарм (с некоторыми модификациями для нашего варианта использования). - person Ian Wesley; 04.12.2019
comment
Не используйте этот модуль, если требуется подписанный ответ, если этот модуль не поддерживает сертификат / ключи - person ; 10.12.2019

Эта библиотека активно поддерживается: https://github.com/onelogin/python3-saml/tree/master/demo-django

person mecampbellsoup    schedule 13.01.2021