37 lines
1.6 KiB
Java
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!");
|
|
}
|
|
}
|
|
}
|