Как извлечь имя пользователя и пароль в Spring Boot? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть сценарий, в котором я пытаюсь подключить свою систему Frontend (SAP UI5) к источнику OData для получения результатов.

Однако в Java есть промежуточный уровень - Spring boot, который собирает все запросы от пользовательского интерфейса и перенаправляет его в службы OData. Причина в том, что сервисы OData не доступны публично. Они находятся за брандмауэром, тогда как приложение Spring Boot общедоступно. Итак, я использую обратный прокси-сервер для установления соединения между сервисами Spring Boot и OData, который работает.

Но проблема здесь в том, что сервисы OData (API) требуют аутентификации пользователя для доступа к данным. Эта аутентификация пользователя уже выполнена один раз на уровне пользовательского интерфейса.

В приложении UI -> SPring Boot включен единый вход App2Appp. Поэтому я могу использовать безопасность Spring для доступа к объекту Principal. Я хочу знать, кроме того, как знать имя пользователя вошедшего в систему пользователя, как мне получить пароль?

1 Ответ

1 голос
/ 23 апреля 2019

Если у вас есть приложение, защищенное с помощью Spring Security, Spring Boot или обычного Spring, у вас есть объект, который обращается к безопасности определенной аутентификации.

Вы можете позвонить и получить Принципал (объект безопасности Java):

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

Этот принцип весной является объектом UserDetails, в котором мы настраиваем всю пользовательскую информацию в Spring.

Затем, чтобы получить имя пользователя и пароль и передать их вашим службам OData:

String username = ((UserDetails)principal).getUsername();
String password = ((UserDetails)principal).getPassword();
...