у вас есть две разные вещи, которыми нужно управлять:
- JWT-защищенные вызовы между вашим интерфейсом и вашим сервером
- JWT-защищенные вызовы между вашим бэкэндом и третьей стороной.
Что бы я сделал, просто сгенерировал 'sessionId' на бэкэнде, который является частью токена, который вы отправляете на ваш фронтэнд. это может быть int или guid или что-то еще.
Затем я бы связал этот 'sessionId' с токеном, полученным от стороннего производителя, и сохранил бы это каким-то образом - какую-то форму базы данных или файлового хранилища (БД было бы очевидной вещью для использования).
Таким образом, когда бы ни поступал запрос от вашего внешнего интерфейса в вашем внутреннем коде, вы должны:
- Извлечение идентификатора сессии из предоставленного ими токена
- найдите запись для этого идентификатора в вашей базе данных, чтобы получить связанный с ним токен
- используйте этот токен для совершения любых необходимых вызовов и отвечайте
Вы должны обязательно обновлять эту ассоциацию всякий раз, когда вам нужно получить новые токены, но это не должно быть слишком сложно.
Вы также можете использовать это, чтобы сделать природу вещи более асинхронной - вы можете сразу же вернуться к вашему внешнему интерфейсу с ответом, предполагающим, что он "работает над этим", тогда внешний интерфейс мог бы вызвать отдельная конечная точка позже для получения результатов ... Таким образом, если сторонняя ссылка занимает некоторое время, то исходный запрос не остается слишком долго ожидающим ответа ...