如何在Spring Boot中提取用户名和密码?

问题描述 投票:0回答:1

我有一个场景,我试图将我的前端系统(SAP UI5)连接到OData源以获取结果。

但是,Java中有一个中间件层 - Spring引导,它捕获来自UI的所有请求并将其转发到OData服务。原因是,OData服务不是公开可用的。它们位于防火墙后面,而Spring Boot应用程序是公开可用的。所以,我使用反向代理来实现Spring Boot和OData服务之间的连接。

但问题是OData服务(API)需要用户身份验证才能访问数据。此用户身份验证已在UI层上完成一次。

从UI - > SPring Boot应用程序启用了App2Appp SSO。所以我可以利用Spring安全性来访问Principal对象。我想知道,除了知道登录用户的用户名外,我该如何获取密码?

spring-boot spring-security sapui5 single-sign-on cloudfoundry
1个回答
1
投票

当您使用Spring Security(Spring Boot或普通Spring)保护应用程序时,您有一个访问特定身份验证安全性的对象。

您可以调用并获取Principal(java安全性的对象):

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

Spring中的这个主体是UserDetails对象,我们在Spring中配置所有用户信息。

然后获取用户名和密码并将它们传递给您的OData服务:

String username = ((UserDetails)principal).getUsername();
String password = ((UserDetails)principal).getPassword();
© www.soinside.com 2019 - 2024. All rights reserved.