Как я могу обработать POST от сторонней аутентификации, когда мне нужен GET в AWS CloudFront? - PullRequest
1 голос
/ 29 апреля 2020

Я использую AWS Cloudfront для обслуживания стати c html и изображений из частного хранилища s3. Мне нужен уровень аутентификации и есть требование использовать Microsoft SSO. Чтобы запустить проверку подлинности, у меня есть функция Lambda, подключенная к запросу Cloudfront Viewer.

Из того, что я понимаю, мне нужно вернуть запрос в методе обратного вызова, когда я хочу пройти запрос зрителя (после аутентификации). Моя проблема заключается в том, что Microsoft SSO перенаправляет на URL-адрес Cloudfront с помощью HTTP POST. Если я возвращаю запрос, Cloudfront пытается выполнить POST на S3 (или отправляет MethodNotAllowed, когда я отключаю POST). Мне нужно, чтобы это был запрос GET, но я не знаю, как я могу это изменить. Согласно документам , HTTP объекта запроса доступен только для чтения.

Я пытался перенаправить на URL-адрес Cloudfront при публикации или обслуживании простого HTML, который ссылается на желаемый html, но оба эти результата приводят к повторному вызову Viewer Request.

Кто-нибудь сталкивался с подобной ситуацией?

1 Ответ

1 голос
/ 30 апреля 2020

Вы сможете вернуть перенаправление, но установите код состояния 303 вместо одного из других кодов 3xx. Это See Other, что приводит к тому, что браузер следит за перенаправлением, но использует GET во втором запросе. Невозможно обмануть CloudFront, заставив его поверить, что метод изменился - требуется перенаправление.

...