강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của billy04106504
billy04106504

câu hỏi đã được viết

Dịch vụ trò chuyện WebSocket/STOMP (spring, vue, redis)

Backend WebSocket thuần túy

WebSocket과 Spring Security 질문

Viết

·

73

0

WebSocket 연결이 처음 http요청으로 시작하기 때문에 필터 체인이 요청을 가로챈다.

따라서 /connect를 permitAll()로 풀어줘야 400에러가 안난다.

 

로 이해했는데 맞을까요?

spring-bootwebsocketstomp-websocketpubsubvue-3

Câu trả lời 2

0

bradkim님의 프로필 이미지
bradkim
Người chia sẻ kiến thức

맞습니다. filterchain은 http요청에 대한 인증처리를 하므로, 웹소켓 커넥트 요청의 경우에는 http요청이 아니기에 처리가 불가합니다. 그래서 모든 연결요청을 permit으로 풀어주고 웹소켓 핸들러에서 인증처리를합니다.

0

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

질문해 주신 WebSocket과 Spring Security 내의 필터 체인에 관한 내용을 설명드리겠습니다.

  1. WebSocket 연결 초기화:

    • WebSocket은 초기 연결 과정에서 HTTP 요청을 사용하여 서버와의 연결을 정립합니다. 이 과정에서 HTTP 프로토콜의 일환으로 서버와 “웹소켓 핸드셰이크”를 진행하게 됩니다.
    • 이러한 초기 HTTP 요청은 Spring Security의 필터 체인에 의해 가로채질 수 있습니다.
  2. Spring Security에서의 필터 제어:

    • Spring Security에서는 특정 URL 패턴에 대해 접근 제어를 설정할 수 있습니다. /connect와 같은 WebSocket을 위한 특정 URL에 대해 permitAll()을 설정하여, 인증 없이도 접근이 가능하게 설정할 수 있습니다.
    • 이를 통해 특정 WebSocket 엔드포인트에 대한 요청이 필터 체인에 의해 거부되지 않고 올바르게 진행될 수 있습니다.
  3. 오류 처리:

    • 만약 자동으로 이 경로에 대한 접근이 허용되지 않으면, 400 Bad Request 오류가 발생할 수 있습니다. 이는 특정 리소스에 대한 잘못된 요청이나 접근이 차단된 경우에 발생합니다.

따라서, WebSocket 연결 시 외부로부터의 접근을 초기화하기 위해 /connect 경로에 대해 permitAll()을 설정하는 것은 적절한 방법입니다.

관련하여 추가로 도움이 될 수 있는 자료를 아래 링크에서 찾아볼 수 있습니다:

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

Hình ảnh hồ sơ của billy04106504
billy04106504

câu hỏi đã được viết

Đặt câu hỏi