반응형
들어가며
- WebSocketSecurity를 활용하여 인증된 사용자에게만 웹소켓 연결, 메시지 전송 등을 제한할 수 있다.
- WebSocketSecurity는 WebSecurity를 통해 처리된 인증 정보를 그대로 사용할 수 있다.
- 아래는 Form Authentication을 통해 로그인한 사용자에게만 웹소켓 연결을 허용하는 예제를 다룬다.
- Form Authentication 예제 참고 : https://sg-choi.tistory.com/641
- WebSocket 예제 참고 : https://sg-choi.tistory.com/294
의존성 추가
implementation("org.springframework.security:spring-security-messaging")
WebSocketSecurityConfig
@EnableWebSocketSecurity
@Configuration
public class WebSocketSecurityConfig {
@Bean
public AuthorizationManager<Message<?>> messageAuthorizationManager(MessageMatcherDelegatingAuthorizationManager.Builder messages) {
return messages
.simpTypeMatchers(SimpMessageType.CONNECT).authenticated() // 웹소켓 연결시에만 인증 확인(인증 정보는 WebSecurity(ex. formLogin)를 통해 인증한 정보를 활용)
.anyMessage().permitAll()
.build();
}
@Bean("csrfChannelInterceptor") // for disable csrf
public ChannelInterceptor csrfChannelInterceptor() {
return new ChannelInterceptor() {
};
}
}
미인증 사용자 테스트
- 로그인을 수행하지 않고 WebSocket 연결 페이지에 접속하여 웹소켓을 연결한다.
- 연결 실패하는지 확인한다.
인증 사용자 테스트
- 로그인 페이지로 이동하여 로그인을 수행한다.
- WebSocket 연결 페이지에 접속하여 웹소켓을 연결한다.
- 웹소켓 연결에 성공하는지 확인한다.
반응형
'Development > Spring Security' 카테고리의 다른 글
[Spring Security] OAuth2 Authorization Server (0) | 2023.10.29 |
---|---|
[Spring Security] Test (0) | 2023.10.29 |
[Spring Security] Jwt Authentication(Custom Filter로 직접 구현하기) (0) | 2023.10.29 |
[Spring Security] OAuth2 Authentication (0) | 2023.10.29 |
[Spring Security] Basic Authentication (0) | 2023.10.29 |