| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- QueryDSL
- 백엔드공부
- 프로그래머스
- 백준
- 자료구조
- error
- TestCode
- LinkedList
- restTemplate
- Java
- spring boot
- 컴퓨터 구조
- 백엔드스쿨
- 백엔드
- spring
- JPA
- array
- 제로베이스
- 스프링부트
- actuator
- 서버
- ORM
- 연관관계
- 컴퓨터 공학
- queue
- SpringBoot
- SpringSecurity
- 개발자
- 핵심가이드
- JWT
- Today
- Total
목록Java (37)
be_better
에러내용 Springboot 2.x버전으로 프로젝트 진행 중 3.x버전으로 변경하게 되었고 SpringSecurity도 6.x 버전으로 Upgrade를 해야하는 상황이었다. Springboot, Security 둘다 버전업을 하고 Postman에서 정상적으로 동작하는것까지 확인했는데, 잘되던 Test Code Controller test에서 말썽이었다. Controller Test중 Body에는 아무값도 들어있지 않고 403 Forbidden이 발생한 상황 원인 Spring Security의 어노테이션인 EnableWebSecurity에는 기본적으로 CSRF 공격을 방지하는 기능을 갖고있다. CSRF(Cross-Site Request Forgery) 공격이란 사이트 간 요청 위조의 줄임말로 웹 애플리케이..
에러 내용 User 권한 추가 테스트 코드 작성 중 ImmutableCollections 에러가 발생했다. 나의 경우 User 권한 roles를 Set 타입으로 지정하고 관리하고 있다. mock으로 가상의 유저를 만들어주고 권한도 지정해준다. Set roleSet = Set.of("ROLE_VIEWER"); given(userRepository.findByUidAndDeletedAtNull(anyString())) .willReturn(Optional.of(User.builder() .uid("testId") .roles(roleSet) .build() ) ); 원인 원인은 roleSet을 선언해줄때 new HashSet() 이 아닌 Set.of() 로 지정해줬기 때문이다. Set.of()를 사용하면 불..
프로젝트 진행중에 유저 정보를 update 하는 api를 unit 테스트 하려는데, header 값으로 넣어줄 jwt accessToken에 대한 유저권한처리가 안돼서 발목을 잡혔다. 해결 SecurityConfig에서 SecurityContext에 유저 권한을 넣어주고 Filter에서 처리하는데 test code를 실행할때도 main module의 SecurityContext를 참조하기 때문에 유저 역할(권한) 처리가 안되는 것이라고 이해했다. 따라서 test module에서 따로 SecurityContext에 필요한 권한을 넣어줘야 한다. 나같은 경우에는 유저 정보 update api는 "USER_VIEWER" 권한을 갖는 유저만 접근할 수 있다. 매번 권한을 설정하는것보다 어노테이션을 만드는게 나아..
에러 내용 프로젝트 진행 중 Response Dto에 createdAt, updatedAt 을 리턴하는 코드를 구현했는데 결과값을 확인하는 과정에서 이와같은 에러가 발생했다. 그전까진 잘 작동하다가 ObjectMapper를 Bean으로 등록하고나서 생긴 오류이다. 원인 LocalDateTime type 직렬화, 역직렬화에 문제가 있어서 생기는 에러이다. 데이터를 주고받으면서 내부의 MessageConverter의 ObjectMapper가 데이터 형식을 바꾸는데 ObjectMapper를 빈으로 등록해 사용하게되니 적용이 잘 안된게 원인이라고 생각한다. 해결 첫번째 해결책 에러메세지에는 add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" ..
보안 필터체인 종류 및 순서 보안필터 체인에서 사용하는 필터에는 여러 종류가 있다. 공식 문서에서 소개하는 필터의 실행 순서 ChannelProcessingFilter WebAsyncManagerIntergrationFilter SecurityContextPersistenceFilter HeaderWriterFilter CorsFilter CsrfFilter LogoutFilter OAuth2AuthorizationRequestRedirectFilter Saml2WebSsoAuthenticationRequestFilter X509AuthenticationFilter AbstractPreAuthenticationedProcessingFilter CasAuthenticationFilter OAuth2Logi..
보안 용어 인증 - authentication 사용자가 누구인지 확인하는 단계, 대표적인 예로 '로그인' 이 있다. 로그인 성공 -> 사용자에게 토큰(token) 전달 토큰이 없는 사용자는 리소스에 접근 x 인가 - authorization 토큰을 가진 인증된 사용자가 내부 리소스에 접근할 권리가 있는지 확인하는 과정. 사이트 등급에 따라 접근할 수 있는 기능이 다른 것이 대표적인 예시이다. 접근 주체 - principal 애플리케이션의 기능을 사용하는 주체 -> 사용자, 디바이스, 시스템 등이 될 수 있다. 인증 과정(신뢰하는 접근 주체인지 확인) -> 인가 과정(접근 주체에게 부여된 권한 확인) 스프링 시큐리티 스프링에 인증, 인가 등의 보안 기능을 적용할 때 사용함 스프링 시큐리티 동작 구조 서블릿..
에러 내용 평소에 맥 노트북 시스템 종료를 안하다가, 한번 재부팅 하고자 하는 마음에 재시작을 하고 프로젝트를 다시 실행했는데, 방금까지 잘 되던 프로젝트가 'entityManagerFactory' 에러가 뜨면서 절대로 실행되지 않는 문제가 발생한다. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init meth..
WebClient 란? Spring WebFlux는 HTTP 요청을 수행하는 클라이언트로 WebClient를 제공한다. WebClient는 리액터(Reactor) 기반으로 동작하는 API이다. 리액터 기반이므로 스레드와 동시성 문제를 벗어나 비동기 형식으로 사용될 수 있다. WebClient 특징들 논블로킹(Non-Blocking) I/O를 지원한다. 리액티브 스트림(Reactive Streams)의 백 프레셔(Back Pressure)를 지원한다. 적은 하드웨어 리소스로 동시성을 지원한다. 함수형 API를 지원한다. 동기, 비동기 상호작용을 지원한다. 스트리밍을 지원한다. WebClient 구성 WebClient를 사용하려면 WebFlux 모듈에 대한 의존성을 추가해야 한다. WebFlux 의존성 추가..