49 lines
1.9 KiB
Java
Executable File
49 lines
1.9 KiB
Java
Executable File
package com.plannaplan.security;
|
|
|
|
import java.io.IOException;
|
|
|
|
import javax.servlet.FilterChain;
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
|
import org.springframework.security.core.Authentication;
|
|
import org.springframework.security.core.AuthenticationException;
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
|
|
import org.springframework.security.web.util.matcher.RequestMatcher;
|
|
|
|
import static org.springframework.http.HttpHeaders.AUTHORIZATION;
|
|
|
|
public class AuthenticationFilter extends AbstractAuthenticationProcessingFilter {
|
|
|
|
AuthenticationFilter(final RequestMatcher requiresAuth) {
|
|
super(requiresAuth);
|
|
}
|
|
|
|
@Override
|
|
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
|
|
throws AuthenticationException, IOException, ServletException {
|
|
|
|
String token = request.getHeader(AUTHORIZATION);
|
|
if (token == null) {
|
|
token = "";
|
|
} else {
|
|
token = StringUtils.removeStart(token, "Bearer").trim();
|
|
}
|
|
Authentication requestAuthentication = new UsernamePasswordAuthenticationToken(token, token);
|
|
return getAuthenticationManager().authenticate(requestAuthentication);
|
|
|
|
}
|
|
|
|
@Override
|
|
protected void successfulAuthentication(final HttpServletRequest request, final HttpServletResponse response,
|
|
final FilterChain chain, final Authentication authResult) throws IOException, ServletException {
|
|
SecurityContextHolder.getContext().setAuthentication(authResult);
|
|
|
|
chain.doFilter(request, response);
|
|
}
|
|
|
|
} |