[ STUDY ]/Spring Boot 10

JPA - ORM, 영속성 컨텍스트

JPA(Java Persistemce API)자바에 있는 데이터를 영구적으로 기록할 수 있는 환경을 제공하는 API즉, 프로그램이 종료되어도 데이터가 영구적으로 기록되어있다.자바 객체와 관계형 데이터 베이스를 매핑(ORM)하는 기술이다.데이터베이스에 직접 접근 ❌  객체 중심으로 데이터베이스 작업을 처리한다.객체 중심 설계를 통해서 데이터베이스와 비즈니스 로직의 분리가 가능하다.기본적인 CRUD작업이 편리하다. ORM(Object Relational Mapping)객체지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블을 자동으로 매핑해주는 기술이다.객체를 데이터베이스에 저장하거나, 조회, 변경하는 역할을 담당한다.장점생산성 - SQL대신 메서드 호출로 데이터베이스 작업을 수행하며, CRUD 작업을..

IOC / DI / AOP

IOC(Inversion of Control)"제어의 역전" 즉, 객체나 메소드의 생명주기를 개발자가 관리하는 것이 아닌 외부(프레임워크)에서 결정하는 것이다. 개발자는 객체를 직접 생성하지 않고 필요한 객체를 프레임 워크에 요청하면 프레임워크가 알아서 생성하고 메모리에 올려서 관리한다. //IOC 없음public class OrderService { private PaymentService paymentService = new PaymentService(); // 직접 생성}//IOC 사용public class OrderService { @Autowired private PaymentService paymentService; // 스프링이 주입}   DI(Dependency Inject..

[ JWT를 활용한 Spring Security ] Access Token 재발급

5. AccessToken이 만료되었을때 - 만료응답을 클라이언트에 반환//토큰이 유효하지 않을 경우if (!jwtService.validateToken(jwt, userDetails.getUsername())) { response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Access token expired"); return;} 만료된 토큰을 받은 서버는 HTTP상태 코드와 함께 "Access token expired"메세지를 클라이언트에 반환  6. AccessToken이 만료되었을때 - 만료응답을 받은 클라이언트api.interceptors.response.use( response => response, async error => { ..

[ JWT를 활용한 Spring Security ] Refresh Token?Access Token?

Refresh Token?유효기간이 길다Access Token이 만료되어 갱신될 때만 사용한다.재발급에 관여하는 토큰 Access Token?유효기간이 짧다API 통신에 사용된다.접근에 관여하는 토큰 왜 이렇게 토큰을 두개로 나눌까?JWT는 탈취의 위험성이 있다!!토큰을 탈취당하면 탈취한 사람이 특정 권한에 대한 인증을 통과할 수도 있다....서버는 실제 주인과 탈취한 사람을 구분 못함그래서 토큰의 유효기간을 짧게 두는게 보안상 좋은데 유효기간이 짧으면 유효시간마다 로그인을 다시해야한다.이런 문제를 해결하기 위해 Access Token과 Refresh Token을 나눠두는 것!  토큰 발급과 인증 방식1. 로그인시에 서버가 Access Token과 Refresh Token을 동시에 발급2. 서버는 Ref..

[ JWT를 활용한 Spring Security ] JWT 토큰 생성

JWT? Json Web Token의 줄임말로 JSON 객체를 사용해 정보를 안전하게 전송하는 토큰 기반 인증 방식 Stateless 방식으로 서버가 클라이언트의 상태를 저장하지 않고, 클라이언트가 요청을 보낼때 제공한 JWT를 기반으로 인증을 처리무상태(stateless): 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미장점 - 특정 DB/서버에 의존하지 않아도 인증 가능- 서버의 확장성이 높기 때문에 대량의 트래픽 발생 시에도 대처가 수월단점  - 클라이언트의 요청에 상대적으로 Stateful 보다 더 많은 데이터가 소모- 데이터 노출로 인한 보안적인 문제사용자 인증, 정보 교환에 사용유효 기간과 서명을 포함하여 변조되지 않았음을 보장 ⬇️⬇️ Stateless의 반대는??..

[ JWT를 활용한 Spring Security ] JWT토큰 인증 과정

JwtRequestFilter란?JwtRequestFilter는 JWT 토큰을 이용해 사용자를 인증하는 스프링 시큐리티 필터클라이언트가 서버에 API 요청을 보낼 때마다 이 필터가 실행되어 Authorization 헤더에 포함된 JWT 토큰을 검증 JwtRequestFilter는 클라이언트가 제공한 토큰이 유효한지 확인하고, 유효하다면 사용자의 인증 정보를 SecurityContext에 저장하여 인증 상태를 유지한다. JWT 토큰 인증 과정 1. 요청의 Authorization 헤더에서 JWT 토큰 추출final String authorizationHeader = request.getHeader("Authorization");if (authorizationHeader != null && authoriza..

[ JWT를 활용한 Spring Security ] 파일 설명

사실 Security를 이해하고 코드를 짠게 아니라서 다시 정리하면서 리팩토링해보려구 한다.....우선 각 파일에 대해서 먼저 정리함! LoginController사용자가 이메일과 비밀번호를 입력하여 인증을 시도하면, 이를 검증한 후 JWT 토큰을 발급하는 API@PostMapping("/login")public ResponseEntity getToken(@RequestBody AccountCredentialsDTO accountCredentials) { try { // UsernamePasswordAuthenticationToken을 사용해 이메일과 비밀번호로 인증 객체 생성 UsernamePasswordAuthenticationToken creds = new Userna..