У меня BFF с пружинной загрузкой с очень простой страницей jQuery в качестве внешнего интерфейса. BFF требует OAUTH2 с внешним сервером авторизации. (Не уверен, что BFF действительно правильный термин здесь, но я надеюсь, что мой смысл достаточно ясен)
После входа в систему и авторизации я хотел бы позвонить в REST API, который защищен тем же сервером авторизации и Мне нужны учетные данные пользователя (JWT) из логина.
FE -> BFF -> Ext API
Как передать эти учетные данные в контроллере BFF REST?
Я нашел предложение получить токен из заголовка запроса и вручную добавить его в запрос вызова бэкэнда. Но в моем случае Spring использует безопасность на основе сеанса, и токен не находится ни в заголовках, ни в принципале, ни в сеансе. (Возможно, я мог бы заставить Spring использовать защиту без сохранения состояния, но подход кажется сомнительным)
Я делаю это совершенно неправильно?
Это то, что я хотел бы сделать:
@GetMapping("/fromApi")
public String getValueFromApi(){
RestTemplate api = new RestTemplate();
// this call needs to have the "Authorization: Bearer token" header set
Map response = api.getForObject("https://secure.backend.api/giveme", Map.class);
// will throw: org.springframework.web.client.HttpClientErrorException$Unauthorized: 401 Unauthorized: [{"error":"authorization not provided"}]
return "Entries: " + response.size();
}
Это мои зависимости:
implementation 'org.webjars:jquery:3.4.1'
implementation 'org.webjars:bootstrap:4.3.1'
implementation 'org.webjars:webjars-locator-core'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
Спасибо