#spring-boot #servlets #google-cloud-platform #google-cloud-run
#весенняя загрузка #сервлеты #google-облачная платформа #google-cloud-run
Вопрос:
Мы используем интеграцию с Auth0 для обеспечения аутентификации для нашего приложения spring boot. Приложение развертывается с помощью docker в Google cloud run.
Но когда я пытаюсь обменять токены, я получаю сообщение об ошибке от auth0 «Ожидаемый https: // .. но перейдите по http: //». Причина, по которой это происходит, заключается в том, что httpServletReuqest.getRequestURI()
возвращает http вместо https.
Вопрос в том, почему getRequestURI возвращает http, когда наш веб-сайт развернут как https в облачном режиме? Я также зарегистрировал заголовки nginx и X-Forwarded-Proto = https.
Комментарии:
1. Я думаю, это происходит из-за того, что балансировщик нагрузки завершает TLS до того, как запрос достигнет вашего приложения.
2. Но есть ли способ сделать так, чтобы он не прерывал TLS?
3. Пока нет. Облачный запуск развернут за GFE (интерфейс Google), отвечающий за связь TLS.
Ответ №1:
Публикация в качестве Вики сообщества, поскольку она основана на комментариях @EmilGi и @GuillaumeBlaquiere.
Как вы можете видеть в этой документации:
Cloud Run перенаправляет все HTTP-запросы на HTTPS, но завершает работу TLS до того, как они достигнут вашей веб-службы. Если ваш сервис генерирует веб-ресурсы, которые ссылаются на другие веб-ресурсы с незащищенными URL-адресами (http://), на вашей странице могут появляться предупреждения о смешанном содержании или ошибки.
И вы не можете отключить это ограничение, поскольку Cloud Run развернут за GFE (интерфейс Google), отвечающий за связь TLS.