Python3-saml и Azure AD - упущен момент
Добрый день, эксперты,
У меня есть веб-приложение Django (оно не выходит в интернет), и до сих пор я использовал django.contrib.auth.backends.ModelBackend
для аутентификации пользователей.
Однако я хочу интегрировать это веб-приложение в существующее решение SSO (например, Azure AD), поэтому я подумал, что python3-saml будет хорошей библиотекой для использования (более конкретно я использую python3-saml-django, но это просто обертка вокруг python3-saml).
Возможно, я упускаю какой-то фундаментальный момент, поскольку я не очень понимаю, как это должно работать.
Когда я использовал ModelBackend
, то у меня была форма входа, где пользователь мог ввести свое имя пользователя+пароль, которые проверялись в базе данных Django и аутентификация завершалась. Должно ли то же самое работать и с SSO? Т.е. появляется форма входа, пользователь вводит свои учетные данные, но они проверяются в Azure AD вместо Django auth tables? Или же должна отображаться пользовательская форма входа для конкретного решения аутентификации (в данном случае Azure AD -> форма входа Microsoft)...?
В моем приложении Django настроен параметр LOGIN_URL, так что если ни один пользователь не вошел в систему, то автоматически появляется моя форма входа.
Также я установил параметр AUTHENTICATION_BACKENDS и он указывает только на django_saml.backends.SamlUserBAckend
.
Я настроил AZure AD (зарегистрировал приложение и добавил пользователя, я проверил это в консоли Azure AD), надеюсь, правильно. Я также заполнил python3-saml's settings.json с URL входа/выхода и т.д.
Когда я пытаюсь войти в систему с помощью пользователя Azure AD, я получаю ошибку авторизации (пользователь и пароль были введены).
Мне просто интересно, может ли кто-нибудь пролить свет на то, как это должно работать? Могу ли я отладить запросы/ответы SAML?
auth основан на токенах в azure ad и перенаправляет пользователя на microsoft login. Вы получите токен auth, который затем сможете использовать для авторизации и предоставления защищенных страниц.
.Сначала зарегистрируйте ваше приложение в azure portal в azure active directory, а также создайте поток пользователей.
Затем скачайте MSAL для python (с помощью pip), который используется для аутентификации с помощью azure ad для python.
Основная архитектура заключается в том, что когда пользователь пытается войти в систему, будет показана страница входа Microsoft, после входа ваше приложение получит токен, который затем вы должны использовать для показа страниц входа.
Ссылки: