Backend/Spring9 [예약 구매 프로젝트]Spring Security - JWT 적용 Stateless이번 프로젝트를 진행하면서 가장 많이 한 생각은 서버 리소스를 어떻게 하면 조금이라도 아낄 수 있을까 하는 것 이었습니다. 동 시간대 수만명의 동시 접속을 고려해야하는 상황에서 로직 하나, 스레드 하나의 비용을 최소화 시켜야 했습니다. 이번엔 서버 리소스를 아끼는 첫 번째 관문 Stateless 로그인에 대해 다룹니다. Spring Security와 JWT를 사용하여 구현했습니다. [Spring Security] Session vs TokenSession - StatefulSpring Security는 기본적으로 formLogin을 통한 Session 방식 인증/인가를 지원합니다. 다른 처리 없이 UserDetails와 UserDetailsService를 구현하고 로그인하면 JSESS.. 2024. 6. 26. Spring Security 인증(Athentication)인증이란 사용자가 누구인지 확인하는 단계를 의미한다. 로그인을 예로 들면, 아이디와 패스워드를 통해 인증에 성공하는 경우 사용자 정보, 권한 등이 포함된 토큰이 발급된다. 일반적으로 JWT(Json Web Token) 형식을 사용한다.인가(Authorization)인가란 인증을 통해 검증된 사용자가 애플리케이션 내부의 리소스에 접근할 때 접근 주체(principal)가 해당 리소스에 접근할 권리가 있는지 확인하는 과정을 말한다. 일반적으로 사용자가 인증 단계에서 발급받은 토큰은 인가 내용을 포함하고 있으며, 사용자가 리소스에 접근하면서 토큰을 함께 전달하면 애플리케이션 서버는 토큰을 통해 권한 유무 등을 확인해 인가를 수행한다.Spring Security스프링 시큐리티는 애.. 2024. 6. 13. JPA Dirty Checking JPA는 엔티티의 상태 변화를 감지하여 변경된 내용이 있는 경우 Update SQL을 처리한다. Service에서 특정 Entity를 가져오라고 하면 EntityManager는 DB에서 해당 값을 찾아 가져온 후 PersistenceContext에 Entity를 저장하고, 동시에 loadedState에 해당 Entity의 초기 상태를 저장한다. 가져온 Entity의 값을 변경하게 되면 즉시 DB에 반영되는 게 아니라 persistenceContext 내부에 있는 entityInstance의 value가 바뀐다.만약 위 상태에서 다시 객체의 상태를 원래 값으로 업데이트한다면 트랜잭션이 commit 하더라도 update query는 실행되지 않는다. loadedState에 있는 값과 현재 entity I.. 2024. 6. 10. 이전 1 2 다음