我有一个Spring Boot Web应用程序,其中spring security与LDAP身份验证集成在一起。此Web应用程序在内部进行REST调用。这些REST调用具有用户名 - 密码身份验证。此用户名密码与spring security一样。无论如何,我可以通过spring安全性验证用户名密码,以便在REST调用中使用。如果不是这样,还有其他方法可以实现这一点。
提前致谢。
答案 0 :(得分:1)
我认为有一种非常好的方式适合你的情况。
默认情况下,Spring Security在验证后不会将密码存储在内存中,因此您需要更改密码。使用Java配置,添加configure(AuthenticationManagerBuilder)
方法:
auth.eraseCredentials(false);
然后,您可以使用
获取当前用户的用户名和密码String username = SecurityContextHolder.getContext().getAuthentication().getName();
Object rawPassword = SecurityContextHolder.getContext().getAuthentication().getCredentials();
答案 1 :(得分:0)
Spring Security是根据安全属性中的规则执行的。
这意味着您只需要启用spring-security,唯一的问题是如果未经授权,它将转到Restful客户端无法理解的Not Authorized Page。但是,如果Restful客户端已经过身份验证并被授予了有效会话,那么它将能够通过Security_check并访问受保护的页面。
我认为Spring安全性的工作方式与AOP类似,因此每个受保护的页面都有一个Security_check横切,只有在认证存在的情况下才允许访问该页面。
答案 2 :(得分:0)
无论如何,我解决了编写自定义AuthenticationProvider的问题,它将执行LDAP身份验证并获取未来REST调用的用户名密码。