본문 바로가기

Spring/Security3

비동기 환경에서 Spring Security 로그인 정보를 유지시키는 방법 Spring에서는 비동기 처리를 위해 @Async 어노테이션이나 CompletableFuture를 자주 사용한다. 하지만 비동기적으로 실행되는 코드에서는 SecurityContextHolder에 저장된 인증 정보(Authentication)가 기본적으로 전파되지 않기 때문에 보안 컨텍스트를 유지하는 것이 문제가 될 수 있다. 해당 포스트에서는 이 문제를 해결하는 방법을 예제와 함께 설명한다.왜 비동기 환경에서 SecurityContext가 유지되지 않을까?Spring Security는 현재 스레드에 보안 컨텍스트를 저장한다. 하지만 @Async나 CompletableFuture를 사용하면 새로운 스레드가 생성되어 비동기 작업이 수행된다. 이때, 기본적으로 새로운 스레드에는 원래 스레드의 보안 컨텍스트가 .. 2024. 9. 2.
WebSecurity ignoring()에 대한 오해와 미적용 문제 해결 방법 😬 배경 회사 프로젝트에서 특정 요청을 필터에서 제외해야 하는 경우가 있었다. 필자는 스프링 시큐리티 WebSecurity ignoring() 메서드에 특정 패턴이 보안(필터링)에 걸리지 않도록 추가했다. 하지만 이전에 등록한 필터에 계속해서 걸리게 되었고, 관련 원인을 파악하고 해당 케이스를 어떻게 해결할지 고민한 내용에 대해서 작성해 본다. WebSecurity ignoring() 기능이란? 스프링 시큐리티에서는 애플리케이션에 구성한 보안적 요소(필터, 패턴, 권한 등)를 무시할 수 있도록 WebSecurity의 ignoring() 기능을 제공한다. 해당 기능에 등록된 패턴들은 보안적 요소를 거치지 않고 바로 통과한다. 따라서 인증/인가가 필요하지 않은 정적 리소스에 대한 요청은 해당 기능 활용한다... 2023. 9. 10.
OAuth 2.0 Grant Type OAuth 2.0에서 "Grant Type"이라는 용어는 애플리케이션이 액세스 토큰을 얻는 방식을 나타낸다. OAuth 2.0은 인증 코드 흐름을 포함하여 여러 권한 부여 유형을 정의한다. 권한부여란 클라이언트가 사용자를 대신해서 사용자의 승인하에 인가서버로 부터 권한을 부여받는 것을 의미한다. 1. Authorization Code Grant Type 클라이언트가 사용자를 대신하여 특정 자원에 접근을 요청할 때 사용되는 방식이다. Google, Facebook 및 GitHub와 같은 타사 인증 공급자 또는 자체 OAuth 서버를 사용하여 애플리케이션에 로그인하는 데 사용된다. 리소스 서버에서 보호된 데이터에 접근하기 위해 클라이언트를 인증하고 인증하기 위해 웹에서 사용되는 가장 일반적인 방법이다. 사용.. 2023. 7. 2.