Spring security

Soozoo·2024년 8월 27일

Spring

목록 보기
11/12

Spring Security는 Java 기반의 Spring Framework에서 애플리케이션의 보안을 담당하는 모듈입니다. 주로 인증(Authentication)과 권한 부여(Authorization)를 관리하여 웹 애플리케이션이 안전하게 동작할 수 있도록 도와줍니다. 다음은 Spring Security의 주요 기능과 개념에 대한 설명입니다.

1. 인증(Authentication)

  • 인증이란? 사용자가 누구인지 확인하는 과정입니다. 보통 사용자 이름과 비밀번호를 사용하여 인증이 이루어지며, 성공적으로 인증되면 사용자는 애플리케이션에 접근할 수 있는 권한을 얻게 됩니다.
  • AuthenticationManager: Spring Security에서 인증을 담당하는 인터페이스로, 다양한 인증 방법(예: 기본 로그인, OAuth, LDAP 등)을 지원합니다.
  • UserDetailsService: 사용자의 정보를 불러오는 데 사용되는 인터페이스입니다. 보통 데이터베이스나 다른 저장소에서 사용자의 이름, 비밀번호, 권한 등을 가져옵니다.

2. 권한 부여(Authorization)

  • 권한 부여란? 인증된 사용자가 어떤 자원에 접근할 수 있는지를 결정하는 과정입니다. 사용자의 역할(Role)이나 권한(Authority)을 기반으로 특정 기능이나 페이지에 접근을 허용하거나 제한할 수 있습니다.
  • AccessDecisionManager: 사용자의 요청에 대해 접근을 허용할지 결정하는 역할을 합니다. 여러 개의 Voter(표결자)가 이 결정을 도울 수 있습니다.
  • 표현식 기반 접근 제어: SpEL(Spring Expression Language)을 사용하여 메서드나 URL에 대한 접근 권한을 설정할 수 있습니다. 예를 들어 hasRole('ADMIN')와 같은 표현식을 사용하여 특정 역할을 가진 사용자만 접근할 수 있도록 설정할 수 있습니다.

3. 필터(Filter) 체인

Spring Security는 여러 개의 필터로 구성된 체인을 통해 요청을 처리합니다. 이 필터 체인은 요청이 애플리케이션의 실제 자원에 도달하기 전에 인증 및 권한 부여를 처리합니다. 주요 필터로는 UsernamePasswordAuthenticationFilter, BasicAuthenticationFilter 등이 있습니다.

4. 설정(Configuration)

Spring Security는 설정을 통해 애플리케이션 보안을 간편하게 구성할 수 있습니다. XML 또는 Java 기반의 설정을 사용할 수 있으며, 최근에는 Java 기반의 설정(@Configuration 클래스)이 주로 사용됩니다.

  • WebSecurityConfigurerAdapter: Spring Security 설정의 핵심 클래스입니다. 이 클래스를 확장하여 보안 규칙을 정의할 수 있습니다. 예를 들어, 특정 URL 패턴에 대해 인증을 요구하거나, CSRF 보호를 설정할 수 있습니다.

5. CSRF(Cross-Site Request Forgery) 보호

Spring Security는 CSRF 공격을 방지하는 기본적인 보호 기능을 제공합니다. CSRF는 사용자가 의도하지 않은 요청을 서버에 보내도록 유도하는 공격입니다. Spring Security는 요청 시마다 고유한 CSRF 토큰을 생성하고, 이 토큰이 서버로 전송되어야만 요청이 유효한 것으로 간주됩니다.

6. OAuth2와 JWT 지원

Spring Security는 OAuth2와 JWT(Json Web Token)를 사용한 인증과 권한 부여도 지원합니다. OAuth2는 제3자 인증을 위한 표준 프로토콜이며, JWT는 인코딩된 토큰 형식으로, 서버와 클라이언트 간에 인증 정보를 안전하게 전달하는 데 사용됩니다.

이와 같은 기능을 통해 Spring Security는 웹 애플리케이션이 안전하게 동작하도록 지원합니다. Spring Security를 통해 손쉽게 강력한 보안 기능을 구현할 수 있습니다.

profile
넙-죽

0개의 댓글