我目前正在研究一个新项目(从scracth开始),该项目从带有Spring Security的Spring Boot开始。
我需要在同一REST API上实现两种身份验证方式。首先是SSO身份验证和LDAP身份验证,这是由用户通过单击Web应用程序上的复选框将用户身份验证请求传输到API来进行的。
我的问题是:我该如何实现?我已经实现了LDAP身份验证或SSO身份验证,但从未在同一个项目中同时使用这两个方法,但是我在该项目上找不到任何文档
致谢
答案 0 :(得分:0)
似乎需要实现自己的AuthenticationProvider
。参见下面的代码:
@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
@Override
public Authentication authenticate(Authentication authentication)
throws AuthenticationException {
String name = authentication.getName();
String password = authentication.getCredentials().toString();
if (shouldAuthenticateAgainstThirdPartySystem()) {
// use the credentials
// and authenticate against the third-party system
return new UsernamePasswordAuthenticationToken(
name, password, new ArrayList<>());
} else {
return null;
}
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(
UsernamePasswordAuthenticationToken.class);
}
}
代码来自:http://www.baeldung.com/spring-security-authentication-provider
在shouldAuthenticateAgainstThirdPartySystem
中,您可以检查请求(https://stackoverflow.com/a/26323545/878361)并决定使用ldap或sso。