Security 기본 필터 확인
2024. 2. 20. 12:15ㆍProgramming/환경 설정 정리
@RequiredArgsConstructor
@Slf4j
public class JwtFilter extends OncePerRequestFilter {
private final UserService userService;
@Value("${jwt-secret}")
private final String secretKey;
private final JwtTokenProvider jwtTokenProvider;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
exapmple(request, response , filterChain);
}
protected void exapmple (HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)throws ServletException, IOException {
final String authorization = request.getHeader(HttpHeaders.AUTHORIZATION);
log.info("authentication: {}", authorization);
//토큰 안보내면 block
if(authorization == null || !authorization.startsWith("Bearer ")) {
log.info("authentication이 없습니다. ");
filterChain.doFilter(request, response);
return;
}
//Token 꺼내기
String token = authorization.split(" ")[1];
//Token Expired되었는지 여부
if(JwtUtil.isExpired(token, secretKey)) {
log.error("Token이 만료 되었습니다.");
filterChain.doFilter(request, response);
return ;
}
//UserName Token에서 꺼내기
String userName=JwtUtil.getUserName(token, secretKey);
log.info("userName:{}: ", userName);
//권한 부여
UsernamePasswordAuthenticationToken authenticationToken
= new UsernamePasswordAuthenticationToken(userName, null, List.of(new SimpleGrantedAuthority("USER")));
//Detail을 넣어줍니다.
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
filterChain.doFilter(request, response);
}
}
'Programming > 환경 설정 정리' 카테고리의 다른 글
[강의 정리] AWS Nginx, Certbot을 활용해 HTTPS 연결하기 (0) | 2024.06.05 |
---|---|
[강의 정리] AWS ELB 설정 방법 (0) | 2024.06.04 |
[강의 정리] AWS 인스턴스 세부 정보 정리 & EC2 배포방법 (0) | 2024.05.28 |
[강의 정리] AWS 기본 환경 설정 용어정리 (0) | 2024.05.27 |
[DB] Oracle Database 외부 공유 데이터베이스 생성 & 접속하기 (0) | 2023.05.22 |