Spring Security

Spring Security

Spring Security는 Java 기반 애플리케이션의 인증인가를 위한 강력한 프레임워크입니다. 웹 보안 강화와 다양한 보안 관련 작업을 용이하게 하는 Spring 프레임워크의 일부로, 주로 Spring 기반 애플리케이션에서 활용됩니다.

주요 기능

  1. 인증(Authentication): 사용자의 신원을 확인하는 과정입니다. Spring Security는 폼 기반 인증, LDAP, OAuth, JWT 등 다양한 인증 메커니즘을 지원합니다.
  2. 권한 부여(Authorization): 인증된 사용자가 특정 리소스에 접근하거나 작업을 수행할 권한을 결정합니다. 예를 들어, 특정 역할을 가진 사용자만이 특정 웹 페이지에 접근할 수 있도록 할 수 있습니다.
  3. 보안 헤더(Secure Headers): 웹 보안 헤더를 통해 브라우저에 보안 지침을 제공합니다. 이는 사이트 간 스크립팅 공격이나 클릭재킹 공격을 방지하는 데 도움을 줍니다.
  4. CSRF 보호(Cross-Site Request Forgery Protection): 사용자가 의도하지 않은 행위를 수행하도록 하는 공격을 방지합니다.
  5. 세션 관리(Session Management): 세션 고정 공격, 세션 타임아웃, 동시 세션 제어 등을 관리합니다.
  6. LDAP 통합: LDAP을 통해 사용자 인증과 권한 부여를 관리합니다.
  7. OAuth 2.0과 OpenID Connect 지원: 외부 시스템을 통한 인증을 지원합니다. 예를 들어, 소셜 로그인 기능을 쉽게 구현할 수 있습니다.
  8. 메소드 수준 보안: 특정 메소드 호출에 대한 접근 제어를 구현할 수 있습니다.

OAuth 2.0 인증 과정

  1. 인증 과정: 사용자가 소셜 로그인을 시도하면, Spring Security는 OAuth 2.0 프로토콜을 따라 인증 페이지로 리다이렉트합니다.
  2. 토큰 교환: 인증 후, 서버는 **authorization code**를 받아 **access token**을 요청합니다.
  3. 사용자 정보 획득: **access token**으로 사용자 정보를 받아옵니다.
  4. 인증 객체 매핑: 사용자 정보를 Spring Security의 인증 객체에 매핑합니다.
  5. 사용성 향상: 사용자는 소셜 로그인 버튼 클릭으로 간편하게 로그인합니다.