전체 글

나와 더불어 성장할 개발새발 블로그
Web

[WebSocket] 웹 소켓 연결 시 검증은 어디서 해야 할까?

개요프로젝트에서 WebSocket을 통해 채팅방을 성공적으로 구현하였다. 하지만 요구사항은 모임에 참여한 사람만 채팅방의 참여가 가능해야하지만, 현재는 채팅방은 누구나 WebSocket을 연결하여 채팅을 송신하거나 수신할 수 있는 상태이다. WebSocket 연결 시, 연결에 대한 인증/인가 로직은 어디다 두어야할지 고민한 흔적을 적어보려 한다. WebSocket 연결 흐름1. WebSocket 연결WebSocket 연결 시, HTTP 연결이 한 번 일어나며 HandShake 과정도 일어난다. 이 과정이 잘 통과되면, 다른 한 쪽의 연결이 끊기기 전까지 양방향 통신이 가능하다 2. Stomp 연결해당 프로젝트에서 Stomp를 이용하여 채팅방을 고도화 하였다. Stomp는 WebSocket 위에서 동..

Spring/Security

[Spring Security] 가리지 않고 예외 먹는 AuthenticationEntryPoint

개요AuthenticationEntryPoint를 통해 인증되지 않은 사용자가 접근할 때에 대한 예외 처리를 하는 것이 목적이었다. 하지만 인증 예외 처리가 일어나지 말아야 할 상황에서도 인증 에러 메시지가 호출 되었다. 해당 과정에서 있었던 트러블 슈팅을 기록하려 한다. 코드CustomAuthenticationEntryPoint@Component@Slf4jpublic class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint { private final ObjectMapper mapper = new ObjectMapper(); private String toJson(ErrorResponse response) thro..

JPA

[JPA] 테스트를 통해 알아본 JPA와 영속성 컨텍스트

개요프로젝트가 한창이다. 프로젝트하며, 테스트 환경에서 JPA와 관련하여 발생한 이슈에 대해 글로 작성하면 좋을 것 같아 정리하였다. 이슈 1. 더티 체킹 (Dirty Checking)바로 코드로 간다.다음은 예제 코드로 시나리오는 다음과 같다.user 정보를 더티 체킹을 통해 업데이트 한다업데이트가 잘 되었는지 검증한다.@SpringBootTest@AutoConfigureMockMvcpublic class ExampleTest extends TestContainerSupport { @Autowired private UserRepository userRepository; @Autowired private TokenProvider tokenProvider; @Autowired ..

kkang._.h00n
깡훈인뎁쇼