В настоящее время я генерирую токены JWT (фактически JWS) из приложения, доступного через публичный адрес, как показано ниже:
https://api.publicdomain.com
токенсодержит полезную нагрузку, сгенерированную сервером:
{
"uid": "7a7c5cdd-c08f-4241-b2c1-c97d291b06d0",
"issuedOn": 1536334767,
"publicKey": "http://api.privatedomain.lan:7777/public-key.pem"
}
Сервер должен поместить URL-адреса в полезную нагрузку для проверки.В этом примере мой сервер фактически развернут за обратным прокси-сервером по следующему адресу:
http://api.privatedomain.lan:7777/
В настоящее время я использую URL хоста приложенияпоэтому при создании этой полезной нагрузки генерируется URL-адрес из фактического приложения - https://api.publicdomain.com
- а не общедоступный URL-адрес - https://api.privatedomain.lan:7777/
.
Обратный прокси-сервер обрабатывает перезапись URL-адресов для моих ответов jsonи все остальное, но я не думаю, что обратный прокси должен обрабатывать перезапись URL в токене JWT.Итак, как мое приложение должно это обрабатывать?
Я вижу два решения:
- Сервер приложений знает, что он развернут за обратным прокси-сервером и жесткими кодами
https://api.publicdomain.com
в полезной нагрузке - Прокси-сервер отправляет дополнительный HTTP-заголовок (есть ли для этого стандарт?), Который приложение использует для создания полезной нагрузки.
Я думаю, что №2 лучше, но я хотел бы иметьпредставление о том, каков общий подход к решению этой проблемы, и если я пропустил другие подходы.