#django #saml-2.0
#джанго #saml-2.0 #django
Вопрос:
Я должен ввести аутентификацию SAML2 в моем проекте Django.
Мое базовое приложение использует токен CSRF, который предоставляется @ensure_csrf_cookie decorator на главной странице.
Для реализации SAML я добавил новую кнопку «войти» на главную страницу (ту, которая устанавливает se csrf token cookie). Кнопка отправить запрос SAML в IDP. Когда я возвращаюсь из IDP на целевую страницу (представление во вложенном приложении saml2, которое считывает ответ) Я получил запрещенную ошибку 403 о токене CSRF.
Я использую библиотеку OneLogin python (python3-saml). https://github.com/onelogin/python3-saml
Целевая страница — это та, которая заканчивается: ?acs
Что я хочу знать, так это то, что это проблема моей целевой страницы или ответ IDP должен быть каким-то образом привязан к токену csrf.
Спасибо.
ПРИМЕЧАНИЕ: я также попытался добавить домен IDP в настройку CSRF_TRUSTED_ORIGINS
Ответ №1:
Вероятно, вам потребуется пометить представление возврата SAML, поскольку @csrf_exempt
поскольку IDP не будет знать, как передать CSRF-токен, специфичный для Django.
Комментарии:
1. Да. Мне пришлось прибегнуть к этому обману, потому что нет способа получить ответ SAML с моим токеном csrf.
2. Это не обман, особенно учитывая, что механизм SAML в любом случае будет проверять полезную нагрузку SAML. У сайта, который мог бы выполнять межсайтовые запросы, нет возможности создать полезную нагрузку SAML, которая также прошла бы эту проверку.