Auth 는 accept() 전에 완료
Handshake 가 클라를 'open then immediately closed' 의 어색한 상태 안 두고 reject 할 수 있는 유일한 자리. 그래서 모든 auth — token validation, permission 체크, user-별 rate limit — 는 websocket.accept() 전에. 빡세게 굴면 비용 0; 느슨하면 leaked auth state 와 헷갈리는 클라 UX.
FastAPI Depends 가 WebSocket 에서도 작동
Depends(...) 시스템이 WebSocket endpoint 에서 완전 지원. token 추출 + validation 의존성 짜고, 실패 시 WebSocketException raise 하면, framework 가 close 처리.
Cookie vs token
브라우저에서 user 가 session cookie 로 인증하면, cookie 가 WebSocket upgrade GET 에 자동 동봉. websocket.cookies 로 읽어. non-browser 클라 (모바일, server-to-server) 는 query string 에 token 넘겨. cwkPippa 가 WebUI 엔 cookie, tooling 엔 token — 같은 auth code path, 다른 transport.