service-external-server/src/main/java/pl/adaptiveapps/serviceexternalserver/auth/ExtTokenAuthenticationProvi...

37 lines
1.6 KiB
Java

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!");
}
}
}