Spring Boot项目上的LDAP和SSO身份验证

时间:2018-08-01 08:15:35

标签: spring spring-boot spring-security spring-security-oauth2 spring-security-ldap

我目前正在研究一个新项目(从scracth开始),该项目从带有Spring Security的Spring Boot开始。

我需要在同一REST API上实现两种身份验证方式。首先是SSO身份验证和LDAP身份验证,这是由用户通过单击Web应用程序上的复选框将用户身份验证请求传输到API来进行的。

我的问题是:我该如何实现?我已经实现了LDAP身份验证或SSO身份验证,但从未在同一个项目中同时使用这两个方法,但是我在该项目上找不到任何文档

致谢

1 个答案:

答案 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。