У меня есть два веб-приложения: один для веб-интерфейса в AngularJS и один для веб-сервисов REST на Java. Оба они развертываются в отдельных доменах.
Приложения используют cookie для аутентификации. Всякий раз, когда пользователь вводит правильное имя пользователя и пароль, сервер возвращает только HTTP файл, содержащий только токен, и этот файл cookie передается по всем запросам. Я включил CORS в обоих приложениях, поэтому cookie сеанса работает правильно.
Теперь я пытаюсь добавить для этого защиту CSRF. Я пытался использовать файл csrf cookie, где на сервере будет отправлять cookie csrf (а не httponly) как часть ответа REST, и пользовательский интерфейс будет считывать значение из файла cookie и передавать его в заголовке токена csrf для других вызовов REST.
Проблема с этим подходом, с которым я сталкиваюсь, заключается в том, что, поскольку сервер находится в другом домене, я не могу прочитать cookie, используя $cookies в AngularJs. Есть ли способ прочитать значение этого файла cookie? Если нет, тогда я могу реализовать CSRF каким-то другим способом?
Я также попытался реализовать создание csrf файла cookie в веб-интерфейсе пользователя в браузере, но браузер не отправляет файл cookie в веб-службу как в своем другом домене.
Итак, мой вопрос заключается в том, как реализовать защиту csrf для такого рода ситуаций?