Backend/Spring

코딩하는 대학생에서 개발자까지
TestContainers에 Singleton 적용하기
·Backend/Spring
TestContainers 란?TestContainers는 Docker 컨테이너를 활용하여 실제 서비스와의 통합 테스트를 쉽게 수행할 수 있도록 지원하는 테스트 라이브러리입니다.https://testcontainers.com/ TestcontainersTestcontainers is an opensource framework for providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.testcontainers.com 많은 스프링 사용자들이 Test를 할 때 인메모리 데이터베이스(H2)를 사용하는데 개발, 프로덕..
다양한 시각에서 바라본 Validation
·Backend/Spring
보호되어 있는 글입니다.
[Spring-boot] 당신의 비밀번호 안전한가요?
·Backend/Spring
문제 상황현재 Fixadate의 Signin 과정은 다음과 같습니다.Client(ios)에서 소셜 로그인을 수행한 뒤, 얻은 정보를 Server에게 보냅니다.Server는 받은 정보를 바탕으로 DB에서 해당 회원이 있는지 조회합니다.해당 회원이 DB에 있으면 JWT 토큰을 발급해서 header로 보내고, 없으면 401 exception을 발생시킵니다.이와 같이 진행을 하면 회원이 있는 것과 없는 것을 잘 판단할 수 있지만, 보안 관점에서 보았을 때 매우 위험한 방법입니다. 만약 무차별 대입 공격과 같이 무작위 문자열을 대입하다가 DB에 있는 회원의 oauthId와 일치하게 되어 jwt를 발급하게 되면 한 사람의 일정을 다른 사람이 전부 볼 수 있게 되기 때문에 매우 큰 문제가 될 수 있는 방법입니다. ..
LazyInitializationException이란? [트러블슈팅]
·Backend/Spring
LazyInitializationException이란 객체를 로딩할 때 지연로딩이 적용된 엔티티 또는 컬렉션을 초기화하지 못했을 때 발생하는 런타임 예외입니다. 지연 로딩? 지연로딩이란 자신과 연관된 엔티티를 실제로 사용할 때 연관된 엔티티를 조회하는 것을 말합니다. Team과 Member로 예시를 들면 1:N 관계에서 매번 Team을 불러올 때마다 Member를 가져올 필요가 없다면 이때 지연 로딩을 사용합니다. 배달의 민족 상점을 예시로 들어보겠습니다. 배달의 민족에서 음식을 시키기 위해 카테고리별 상점들을 보고 있을 때 저희는 상점의 정보만 필요합니다. 리뷰를 보고 싶으면 상점을 클릭해서 그 상점의 리뷰를 보죠. 상점과 리뷰는 1:N관계인데 상점을 호출할 때 상점에 달린 리뷰를 가져올 필요가 없는 ..
[Spring-boot] Spring Security 인증 인가
·Backend/Spring
인증과 인가란? 인증이란? 사용자가 시스템에 들어갈 수 있는지 확인하는 것이다. 인가란? 사용자가 받은 권한으로 시스템에 접근할 수 있는지 확인하는 것이다. Spring Security - SecurityFilterChain Spring Security에서 보안 필터 체인을 구성하는데 사용되는 인터페이스입니다. @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .cors() .and() .csrf().disable() .logout() .disable() .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and..
[Spring-boot]JWT를 이용해 AccessToken 발급, 검사, 정보 추출
·Backend/Spring
JWT(Json Web Token)이란? 사용자 인증을 위해 인증에 필요한 정보를 토큰에 담아서 암호화시켜 사용하는 인터넷 표준 인증 방식 1. JWT란? JWT는 Header, Payload, Signature 3 부분으로 구성되어 있다. Header : Header에는 JWT의 유형과 해시 알고리즘 등의 메타 데이터를 포함한다. 보통 "typ" , "alg" 가 들어가고, JSON형식으로 표현되고, Base64로 인코딩 됩니다. Payload : Payload는 Claim 정보를 포함합니다. Claim은 토큰에 대한 추가적인 데이터를 나타냅니다. JSON 형식으로 표현되며, Base64로 인코딩 됩니다. Signature : Signature은 헤더와 페이로드의 내용을 바탕으로 생성되며, 토큰이 유효..
코딩하는_대학생
'Backend/Spring' 카테고리의 글 목록