使用spring security中的密码来验证REST调用

时间:2016-04-20 06:58:43

标签: java spring-mvc authentication spring-security spring-boot

我有一个Spring Boot Web应用程序,其中spring security与LDAP身份验证集成在一起。此Web应用程序在内部进行REST调用。这些REST调用具有用户名 - 密码身份验证。此用户名密码与spring security一样。无论如何,我可以通过spring安全性验证用户名密码,以便在REST调用中使用。如果不是这样,还有其他方法可以实现这一点。

提前致谢。

3 个答案:

答案 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调用的用户名密码。