WebSocket 의 인증정보 설정

임기준·2025년 7월 22일
0

왜 중요한가?

HTTP 요청의 경우, 필터 체인 안에서 Spring Security가 자동으로 인증정보를 SecurityContextHolder에 넣어주지만,
WebSocket 에서는 인증 정보가 자동으로 연결되지 않기 때문에 메세지 처리시마다 수동으로 인증정보를 넣어 줘야 한다.

코드별 분석을 통한 인증정보 용도

# ChannelInterceptor 구현체

1. SecurityContextHolder.getContext().setAuthentication(authentication);
2. accessor.setUser(authentication);
3. this.sessionAuthMap.put(sessionId, authentication);

각각의 인증정보 저장의 목적을 살펴 보자.

  1. Controller 의 @MessageMapping 메소드에서 사용자의 인증을 사용하고 싶을 때를 위해 설정(-> 요청별 인증)
  2. @SendToUser 와 같이 특정 사용자(결국, 자기 자신)에게 메세지를 보내기 위해 설정
  3. WebSocket 세션 전체의 인증 상태 유지
profile
openerzone

0개의 댓글