티스토리 뷰

Back End/☠️ Java

Spring Security 인증 방식

James Wetzel 2024. 11. 20. 17:50
Spring Security에서 `SecurityFilterChain`은 요청에 대한 인증 및 인가를 관리하는 핵심 구성 요소입니다. 이를 설정할 때 다양한 인증 방식을 선택하여 구현할 수 있습니다. 아래는 `SecurityFilterChain`에서 사용할 수 있는 주요 인증 방식들과 그에 대한 설명입니다.

---

### 1. **폼 기반 인증 (Form Login)**  
- **설명**: 사용자가 브라우저에서 로그인 페이지를 통해 인증 정보를 입력하는 방식입니다.  
- **설정 예시**:
  ```java
  http.formLogin(form -> form
      .loginPage("/login") // 사용자 정의 로그인 페이지
      .permitAll()
  );
  ```

---

### 2. **HTTP 기본 인증 (HTTP Basic Authentication)**  
- **설명**: 브라우저의 기본 팝업을 통해 사용자 이름과 비밀번호를 입력받아 인증하는 간단한 방식입니다. 주로 API를 보호하는 데 사용됩니다.  
- **설정 예시**:
  ```java
  http.httpBasic();
  ```

---

### 3. **OAuth2 로그인 (OAuth2 Login)**  
- **설명**: Google, Facebook 등 외부 인증 제공자를 통해 인증을 처리합니다.  
- **설정 예시**:
  ```java
  http.oauth2Login(oauth -> oauth
      .loginPage("/oauth-login")
  );
  ```

---

### 4. **JWT (JSON Web Token)**  
- **설명**: 토큰 기반 인증으로, 클라이언트가 서버로부터 받은 JWT를 요청마다 헤더에 포함해 인증을 수행합니다.  
- **설정 예시**:
  ```java
  http.oauth2ResourceServer(resourceServer -> resourceServer
      .jwt()
  );
  ```

---

### 5. **LDAP 인증 (Lightweight Directory Access Protocol)**  
- **설명**: 기업 환경에서 주로 사용되며, 디렉터리 서비스(예: Active Directory)를 통한 인증 방식입니다.  
- **설정 예시**:
  ```java
  http.ldapAuthentication(auth -> auth
      .userDnPatterns("uid={0},ou=people")
      .groupSearchBase("ou=groups")
  );
  ```

---

### 6. **기본 인증 없이 공개 자원 허용**  
- **설명**: 인증 없이 누구나 접근 가능한 URL을 설정할 수 있습니다.  
- **설정 예시**:
  ```java
  http.authorizeHttpRequests(auth -> auth
      .requestMatchers("/public/**").permitAll()
  );
  ```

---

### 7. **기타 사용자 정의 인증 방식**  
- **설명**: `CustomAuthenticationProvider` 등을 활용해 직접 인증 로직을 구현할 수 있습니다.  
- **설정 예시**:
  ```java
  http.authenticationProvider(new CustomAuthenticationProvider());
  ```

---

### 요약
- 인증 방식은 프로젝트의 요구사항에 따라 적절히 선택해야 합니다.
- `SecurityFilterChain`에서 설정된 인증 방식은 요청마다 호출되는 필터를 통해 동작합니다.
- 위 방식들을 조합하거나 특정 인증 경로에만 적용할 수도 있습니다.

필요한 방식에 따라 더 구체적인 구현을 도와드릴 수 있으니 추가적인 요청이 있다면 말씀해주세요! 😊
728x90
반응형