package pl.adaptiveapps.serviceexternalserver.auth; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.web.authentication.session.SessionAuthenticationException; import org.springframework.stereotype.Component; @Component public class ExtTokenAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider { private static final Logger logger = LoggerFactory.getLogger(ExtTokenAuthenticationProvider.class); @Value( "${ext.client.token}" ) private String extToken; @Override protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken) throws AuthenticationException { } @Override protected UserDetails retrieveUser(String s, UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken) throws AuthenticationException { ExtToken token = (ExtToken) usernamePasswordAuthenticationToken; if (token.validate(extToken)) { // logger.info("Token validated"); return new ExtUser(); } else { logger.info("Token not valid"); throw new SessionAuthenticationException("Invalid token!"); } } }