Search in sources :

Example 1 with NacosUserDetails

use of com.alibaba.nacos.console.security.nacos.users.NacosUserDetails in project nacos by alibaba.

the class LdapAuthenticationProvider method authenticate.

@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
    String username = (String) authentication.getPrincipal();
    String password = (String) authentication.getCredentials();
    if (isAdmin(username)) {
        UserDetails userDetails = userDetailsService.loadUserByUsername(username);
        if (PasswordEncoderUtil.matches(password, userDetails.getPassword())) {
            return new UsernamePasswordAuthenticationToken(userDetails, password, userDetails.getAuthorities());
        } else {
            return null;
        }
    }
    if (!ldapLogin(username, password)) {
        return null;
    }
    UserDetails userDetails;
    try {
        userDetails = userDetailsService.loadUserByUsername(LDAP_PREFIX + username);
    } catch (UsernameNotFoundException exception) {
        String nacosPassword = PasswordEncoderUtil.encode(DEFAULT_PASSWORD);
        userDetailsService.createUser(LDAP_PREFIX + username, nacosPassword);
        User user = new User();
        user.setUsername(LDAP_PREFIX + username);
        user.setPassword(nacosPassword);
        userDetails = new NacosUserDetails(user);
    }
    return new UsernamePasswordAuthenticationToken(userDetails, password, userDetails.getAuthorities());
}
Also used : UsernameNotFoundException(org.springframework.security.core.userdetails.UsernameNotFoundException) UserDetails(org.springframework.security.core.userdetails.UserDetails) NacosUserDetails(com.alibaba.nacos.console.security.nacos.users.NacosUserDetails) User(com.alibaba.nacos.config.server.model.User) NacosUserDetails(com.alibaba.nacos.console.security.nacos.users.NacosUserDetails) UsernamePasswordAuthenticationToken(org.springframework.security.authentication.UsernamePasswordAuthenticationToken)

Aggregations

User (com.alibaba.nacos.config.server.model.User)1 NacosUserDetails (com.alibaba.nacos.console.security.nacos.users.NacosUserDetails)1 UsernamePasswordAuthenticationToken (org.springframework.security.authentication.UsernamePasswordAuthenticationToken)1 UserDetails (org.springframework.security.core.userdetails.UserDetails)1 UsernameNotFoundException (org.springframework.security.core.userdetails.UsernameNotFoundException)1