#amazon-web-services #http #http-headers #reverse-proxy
#amazon-веб-сервисы #http #http-заголовки #обратный прокси
Вопрос:
Я планирую настроить ALB (Amazon Load Balancer) для аутентификации. Он будет находиться перед моим клиентским приложением и пересылать аутентифицированные запросы только с помощью access_token и user claim jwt в качестве заголовков, x-amzn-oidc-accesstoken
x-amzn-oidc-data
соответственно [0].
Моему клиентскому приложению потребуется перехватить эти перенаправленные заголовки и сохранить их в localStorage для доступа к другим ресурсам AWS в последующих запросах (например, S3).
Если я клиентское приложение, получающее запрос ALB, как мне перехватить эти заголовки? Будут ли они приходить как запрос или ответ?
[0] Смотрите шаг № 10 на схеме:https://www.exampleloadbalancer.com/auth_detail.html
Ответ №1:
Эти заголовки не будут получены вашим клиентом по умолчанию. Клиент отправляет запрос в ALB, и после аутентификации пользователя ALB передает заголовки на ваш серверный сервер.
Если клиенту нужны эти заголовки, ваш серверный сервер может добавить их в заголовки ответа, и ваш клиент затем сможет извлечь их оттуда.
При этом имейте в виду, что если вы вернете эти заголовки клиенту, то любой, кто использует некоторые простые инструменты отладки браузера, сможет увидеть заголовки и затем создавать свои собственные запросы, используя их. Возможно, было бы лучше добавить необходимую функциональность в серверную часть, чтобы учетные данные не были потенциально доступны пользователям.
Комментарии:
1. Спасибо, это имеет смысл. Как клиент будет получать заголовки входящих запросов через javascript? Или будущие клиентские запросы к моему бэкэнду будут включать эти заголовки по умолчанию?
2. Я перечитал ваш вопрос, поскольку думаю, что неправильно понял. Если вашему клиентскому приложению нужны эти заголовки, вам нужно будет каким-то образом включить их в свой ответ. Возможно, вашей серверной части потребуется добавить их в качестве HTTP-заголовков к ответу, и ваши клиенты смогут извлечь их оттуда.
3. Добавление последующих действий для потомков. Моя проблема заключалась в том, что я не мог проверить, через какие заголовки проходит ALB локально (в то время у меня не было среды разработки). В конце концов я смог получить заголовки из серверной части с помощью express.