Проверка подлинности CDN с помощью HEAD-запроса к веб-странице, использующей единый вход SAML - PullRequest
0 голосов
/ 30 ноября 2018

Я изучаю использование сети доставки контента (CDN) перед веб-сайтом, который требует аутентификации и авторизации.Для защищенного контента, доступ к которому разрешен только определенным вошедшим в систему пользователям, я хотел бы, чтобы CDN все еще кэшировал и возвращал контент для авторизованных пользователей, но не возвращает его для неавторизованных / неаутентифицированных пользователей.

Идея состоит в том, что когда CDN получает запрос, он отправляет HTTP-запрос HEAD к источнику, чтобы проверить, имеет ли запрашивающий пользователь доступ к файлу.Таким образом, исходный сайт должен будет ответить с HTTP-статусом, который CDN будет использовать, чтобы решить, может ли он безопасно вернуть кэшированный ресурс или ему нужно будет отказать пользователю.

Проблема, с которой я сталкиваюсь, заключается в том, чторесурс origin является частью сайта, прошедшего проверку подлинности SAML.Таким образом, если анонимный пользователь запрашивает файл, CDN затем отправляет запрос и получает ответ 200.CDN интерпретирует это как означающее, что пользователь авторизован, и предоставляет им кэшированный файл.Но в действительности ответ 200 - это только начало аутентификации SAML.SAML знает, что пользователь еще не аутентифицирован, поэтому отправляет инициирует аутентификацию с ответом 200, как это обычно происходит с SAML.Таким образом, ответ 200 на запрос HEAD - это тот же ответ, который пользователь получит на запрос GET (что и должен делать запрос HEAD), но он не дает CDN реальное сообщение, которое я хочу дать..

Есть ли решение для этого или SAML просто не совместим с потоком CDN, который я ищу?

По сути, я хочу, чтобы запрос HEAD получил 200 ответ, если пользователь аутентифицирован / авторизован, и некоторый другой статус, если пользователь не аутентифицирован / авторизован.Но при использовании SAML запрос HEAD без проверки подлинности также получает ответ 200.Я надеюсь избежать настройки того, как запросы HEAD обрабатываются исходным сервером, поскольку поток SAML происходит очень рано и это не то, что я действительно хочу настроить.

...