Nano Hash - криптовалюты, майнинг, программирование

Spring Cloud Netflix Zuul, CSRF и отправка форм

У меня есть некоторые проблемы с защитой Spring Cloud и CSRF. Я защитил свое приложение (шлюз и службу регистрации) с помощью Spring Cloud Security, OAuth2 и т. д.

Я предоставил доступ всем (permitAll) к /signup, где шлюз направляет к фактической службе регистрации. Я также предоставил доступ всем на самом сервере регистрации. Это работает, как и ожидалось.

Что вызывает у меня головную боль, так это защита от CSRF. Шлюз и служба регистрации создают токен CSRF самостоятельно. Токен от шлюза будет отправлен клиенту, а токен от службы регистрации будет потерян (где-то на шлюзе).

Если я отправляю что-то в службу регистрации, срабатывает защита CSRF и сообщает, что токен был нулевым или фактическое значение не соответствует ожидаемому значению, если я пытаюсь повторно использовать значение из шлюза, которое доступно в HTTP. заголовки.

У меня он работает с отключением CSRF в службе регистрации, но это не кажется правильным решением, потому что оно работает только тогда, когда кто-то отправляет токен обратно от клиента, например Angular SPA. Когда я пытаюсь отправить форму (которая отображается в службе регистрации) из браузера, это не удается из-за отсутствия параметра _csrf. Если я активирую CSRF в сервисе регистрации и добавлю в форму параметр _csrf, сработает CSRF-защита шлюза и скажет, что фактический токен не соответствует ожидаемому, что абсолютно правильно, поскольку фактический токен — это один от службы регистрации, а ожидаемый токен — от шлюза.

Я мог бы отключить CSRF на шлюзе, но это приведет к тому, что мне придется настраивать материал CSRF для каждой службы, которая используется клиентом REST или SPA.

Я пробовал ignoreAntMatchers() в конфигурации HttpSecurity.csrf(), где я могу исключить определенные пути, но это мне тоже не помогает. Ожидаемое значение — это нечто совершенно другое. Кажется, для запроса POST создается новый сеанс.

Итак, есть ли шанс, что я смогу использовать CSRF на шлюзе и службу регистрации с отправкой формы и Zuul одновременно?


  • Вы нашли какое-либо решение для этого? 17.12.2017

Ответы:


1

Вы должны заставить это работать: я думаю, что CSRF должен быть отключен в Zuul, и что Zuul должен пересылать исходный токен CSRF из службы.

Вы пытались установить пользовательские «чувствительные заголовки», чтобы избежать потери токена? Поскольку конфигурация по умолчанию заключается в удалении всех заголовков «Cookie» и «Set-Cookie», вам необходимо изменить его:

zuul:
  routes:
    users:
      path: /myusers/**
      # This is the default value if not set
      sensitiveHeaders: Cookie,Set-Cookie,Authorization
      url: https://downstream

становится

zuul:
  routes:
    users:
      path: /myusers/**
      sensitiveHeaders: Authorization
      url: https://downstream
20.05.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..