▶ JwtAuthenticationEntryPoint 클래스@Componentpublic class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint { @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException { response.sendError(HttpServletResponse.SC_UNAUTHORIZED); }}@Com..
전체 글
▶ JwtAccessDeniedHandler 클래스@Componentpublic class JwtAccessDeniedHandler implements AccessDeniedHandler { @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException { response.sendError(HttpServletResponse.SC_FORBIDDEN); }}@Component: 이 어노테이션은 Spring에 이 클래스를 Bean으로 등록하도록 알려준다. Spring..
▶ GlobalExceptionHandler 클래스@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity handleException(Exception e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage()); }}@ControllerAdvice: 이 어노테이션은 전역 예외 처리기를 정의하는 데 사용된다. 애플리케이션의 모든 컨트롤러에서 발생하는 예외를 이 클래스에서 공통으로 처리할 수 있다. 이를 통해 예외 처리 코드를 여러 컨트롤..
▶ UserController 클래스더보기@RestController@RequiredArgsConstructor@RequestMapping("/api")public class UserController { private final UserService userService; private HandlerMethodArgumentResolver xxx; private RequestParamMethodArgumentResolver uyyy; private DispatcherServlet dps; ... }▷ UserController 클래스 분석@RestController@RequiredArgsConstructor@RequestMapping("/api")@RestControll..
▶ AuthController 클래스더보기@Slf4j@RestController@RequestMapping("/api")@RequiredArgsConstructorpublic class AuthController { private final AuthenticationService authenticationService; ... }▷ AuthController 클래스 해석@Slf4j@RestController@RequestMapping("/api")@RequiredArgsConstructor@Slf4j: 이 어노테이션은 Lombok에서 제공하는 기능으로, log라는 이름의 Logger 객체를 자동으로 생성한다. 이를 통해 log.info(), log.debug(), log.error..
(위키북스) Spring Security in Action[ ▶ CORS ]기본적으로 브라우저는 사이트가 로드된 도메인 이외의 도메인에 대한 요청은 허용하지 않는다. 그렇기에 CORS (교차 출처 리소스 공유) 로 정책을 완화하여 일부 조건에서 서로 다른 출처 간의 요청을 허용하게 한다.특히 대다수의 프론트엔드와 백엔드는 별도의 애플리케이션으로 구성되기 때문에 더욱 중요한 기능이다. [ ▷ CORS 작동 방식 ]애플리케이션이 두 개의 서로 다른 도메인 간에 호출하는 것은 모두 금지된다. 하지만 그러한 호출이 필요할 때가 있다. 이떄 CORS를 이용하여 애플리케이션이 요청을 허용할 도메인, 그리고 공유할 수 있는 세부 정보를 지정할 수 있다.CORS 매커니즘은 HTTP 기반이며 주요한 헤더는 다음과 같다..
(위키북스) Spring Security in Action [ ▶ CSRF ]CSRF (사이트 간 요청 위조)는 광범위한 공격 유형으로 CSRF에 취약한 애플리케이션은 인증 후 사용자가 웹 애플리케이션에서 원치 않는 작업을 실행하게 할 수 있다.[ ▷ 스프링 시큐리티의 CSRF 보호 작동 방식 ]업무 환경에서 웹 툴을 이용해 파일을 저장하고 관리하는 시나리오를 예로 들어보면, 이 툴의 웹 인터페이스로 새 파일을 추가하고 레코드의 새 버전을 추가하며 삭제할 수 있다. 어떤 이유로 페이지 하나를 열어보라는 이메일 받는다. 페이지를 열어봤지만 빈 페이지였으며 알려진 웹사이트로 리디렉션된다. 다시 업무를 시작하려고 했지만 모든 파일이 없어진 것을 발견했다. 사용자는 파일을 관리할 수 있는 애플리케이션에 로그인한..
https://sundaland.tistory.com/440 [ ▶ Token ] 웹 애플리케이션에서 클라이언트와 서버 간의 안전한 통신을 위해 토큰이 사용된다. HTTP는 상태 비저장(stateless) 프로토콜이기 때문에, 클라이언트의 로그인 상태를 유지하거나 사용자를 식별하기 위해 매번 인증이 필요하다. 토큰은 사용자 인증과 권한 부여, 세션 관리 등을 보다 안전하고 효율적으로 처리하며, 이를 통해 웹 애플리케이션의 보안성과 확장성을 크게 향상시킨다. [ ▷ 토큰의 생성과 전송 과정 ]인증 과정: 사용자가 로그인을 하면 서버는 사용자의 자격 증명을 확인하고, 이를 바탕으로 토큰을 생성하여 반환한다. 이 토큰은 주로 JSON Web Token (JWT) 형식으로, 서버만이 검증할 수 있는 서명(Si..