joaopaulofcc

Untitled

Nov 16th, 2023
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. package com.example.springjwt.auth;
  2.  
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import io.jsonwebtoken.Claims;
  5. import jakarta.servlet.FilterChain;
  6. import jakarta.servlet.ServletException;
  7. import jakarta.servlet.http.HttpServletRequest;
  8. import jakarta.servlet.http.HttpServletResponse;
  9. import org.springframework.http.HttpStatus;
  10. import org.springframework.http.MediaType;
  11. import org.springframework.security.authentication.AuthenticationServiceException;
  12. import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  13. import org.springframework.security.core.Authentication;
  14. import org.springframework.security.core.context.SecurityContextHolder;
  15. import org.springframework.stereotype.Component;
  16. import org.springframework.web.filter.OncePerRequestFilter;
  17.  
  18. import java.io.IOException;
  19. import java.util.ArrayList;
  20. import java.util.HashMap;
  21. import java.util.Map;
  22.  
  23. @Component
  24. public class JwtAuthorizationFilter extends OncePerRequestFilter {
  25.  
  26. private final JwtUtil jwtUtil;
  27. private final ObjectMapper mapper;
  28.  
  29. public JwtAuthorizationFilter(JwtUtil jwtUtil, ObjectMapper mapper) {
  30. this.jwtUtil = jwtUtil;
  31. this.mapper = mapper;
  32. }
  33. @Override
  34. protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
  35. Map<String, Object> errorDetails = new HashMap<>();
  36.  
  37. try {
  38. String accessToken = jwtUtil.resolveToken(request);
  39. if (accessToken == null ) {
  40. filterChain.doFilter(request, response);
  41. return;
  42. }
  43. System.out.println("token : "+accessToken);
  44. Claims claims = jwtUtil.resolveClaims(request);
  45.  
  46. if(claims != null & jwtUtil.validateClaims(claims)){
  47. String email = claims.getSubject();
  48. System.out.println("email : "+email);
  49. Authentication authentication =
  50. new UsernamePasswordAuthenticationToken(email,"",new ArrayList<>());
  51. SecurityContextHolder.getContext().setAuthentication(authentication);
  52. }
  53.  
  54. }catch (Exception e){
  55. errorDetails.put("message", "Authentication Error");
  56. errorDetails.put("details",e.getMessage());
  57. response.setStatus(HttpStatus.FORBIDDEN.value());
  58. response.setContentType(MediaType.APPLICATION_JSON_VALUE);
  59.  
  60. mapper.writeValue(response.getWriter(), errorDetails);
  61.  
  62. }
  63. filterChain.doFilter(request, response);
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment