인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

심심이님의 프로필 이미지

작성한 질문수

웹소켓/STOMP 채팅서비스(spring, vue, redis)

subscribe와 publish시 인증

해결된 질문

작성

·

100

·

수정됨

0

현재 코드에
if (StompCommand.CONNECT==accessor.getCommand()){ System.out.println("connect 요청 시 토큰 유효성 검증"); String bearerToken = accessor.getFirstNativeHeader("Authorization"); String token= bearerToken.substring(7);

 

Connect 시에만 인증을 요구하는데

Stomp 연결 이후 publish와 subscribe 시에는 STOMP에서 인증이 자동으로 되는건가요?

 

아니면 현재 코드에서 작성하지 않은 것인가요?

답변 2

0

bradkim님의 프로필 이미지
bradkim
지식공유자

연결이돼야 publish와 subscribe가 가능하니, 검증이 추가적으로 필요하진 않아보입니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 심심이님.

웹소켓과 STOMP를 사용한 인증 흐름에 대한 질문을 주셨군요. STOMP 프로토콜에서 인증 처리에 대한 좋은 질문입니다. 아래에 설명드릴게요:

  1. 초기 연결 인증 (CONNECT):

    • 현재 코드를 보면, 클라이언트가 STOMP 연결 시 StompCommand.CONNECT 명령어와 함께 인증 토큰을 확인하여 유효성을 검증하는 부분이 구현되어 있습니다. 이 단계에서는 클라이언트가 서버와 처음 연결할 때 제공한 토큰을 통해 인증이 이루어집니다.
  2. 이후 메시지 전송 (PUBLISH/ SUBSCRIBE):

    • STOMP 연결이 처음에 인증된 이후, 메시지 전송과 구독 단계에서는 연결 당시 인증이 성공했음에 의존하기 때문에 별도의 추가 인증 절차가 기본적으로는 적용되지 않습니다. 즉, 연결 이후의 PUBLISH와 SUBSCRIBE 단계에서는 처음 연결 시의 인증 상태를 계속 유지하게 됩니다.
  3. 추가 인증:

    • 일반적으로 STOMP에서는 연결 이후 추가적인 인증 정보를 지속적으로 검증하지 않습니다. 그러나 보안을 강화하기 위해 애플리케이션 레벨에서 사용자가 메시지를 보내거나 구독할 때 추가적으로 인증 정보를 파악할 수도 있습니다.

다시 말해, STOMP 연결 이후 일반적인 메시지 전송 시에는 추가 인증이 진행되지 않는 것이 기본 프로토콜 동작이지만, 이 부분을 보안상의 이유로 어플리케이션에서 커스터마이징할 수 있습니다.

이와 관련된 더 자세한 내용을 확인하고 싶으시다면 다음 링크를 참고해 보세요:
- STOMP 프로토콜에서의 인증 처리 및 보완 방법 관련 질문

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.