[Spring Security] 스프링 시큐리티

zini9188·2023년 3월 15일

Spring Security

목록 보기
2/6

Spring Security

Spring MVC 기반 애플리케이션의 인증(Authentication)과 인가(Authorization) 기능을 지원하는 보안 프레임워크이다.

웹 애플리케이션 및 RESTful 서비스를 보호하는 데 사용한다.

기능

  • 다양한 유형의 사용자 인증 기능 적용

    • 폼 로그인 인증, 토큰 기반 인증, OAuth 2 기반 인증, LDAP 인증
  • 사용자의 역할에 따른 권한 레벨 적용

  • 애플리케이션에서 제공하는 리소스에 대한 접근 제어

  • 민감한 정보에 대한 데이터 암호화

  • SSL(Secure Sockey Layer) 적용, SSO(Single Sign-On)

  • 일반적으로 알려진 웹 보안 공격 차단

  • 클라이언트 인증서 기반 인증

용어

  • Principal (주체)

    • 애플리케이션에서 작업을 수행할 수 있는 사용자, 디바이스, 시스템 등

    • 일반적으로 인증 프로세스가 성공적으로 수행된 사용자의 계정 정보

  • Authentication (인증)

    • 애플리케이션을 사용하는 사용자가 본인이 맞음을 증명하는 절차

    • 인증을 정상적으로 수행하기 위해 사용자를 식별하는 정보를 Credential(신원 증명 정보)이라고 함

      • 특정 사이트에서 로그인을 위해 입력하는 패스워드, 주민등록증 등
  • Authorization (인가 또는 권한 부여)

    • 인증이 정상적으로 수행된 사용자에게 권한을 부여하여 특정 리소스에 접근할 수 있도록 허가하는 과정
    • 인증 이후에 수행되어야 하며 일반적으로 역할(Role)의 형태로 부여
  • Access Control (접근 제어)

    • 사용자가 애플리케이션의 리소스에 접근하는 행위를 제어하는 것

사용하는 이유

  • 스프링 시큐리티를 사용하지 않고 보안 강화를 위한 솔루션을을 직접 구현하는 것은 어렵다.

  • 스프링 시큐리티만 한 다른 프레임워크의 부재

  • 특정 보안 요구 사항을 만족시키기 위한 코드의 커스터마이징이 용이하고 유연한 확장이 가능

보안이 적용된 웹 요청의 처리 흐름

  • 스프링 시큐리티의 컴포넌트들이 어떻게 상호작용하여 인증, 권한 등의 보안 작업을 처리하는지 이해하기

  1. 사용자 정보 (Credential)가 포함된 사용자 요청이 들어옵니다.

  2. 인증 관리자에 의해 해당 Credential이 유효한지 체크하게 됩니다. (인증)

    2-1. 유효하지 않다면 예외를 발생

  3. 적절한 Credential일 경우에는 요청에 맞는 권한을 가지고 있는지 접근 결정 관리자에 의해 체크하게 됩니다. (인가)

    3-1. 유효하지 않다면 예외를 발생

  4. 적절한 권한을 가진 Credential일 경우 요청에 맞는 리소스에 접근하여 응답하게 됩니다.

profile
똑같은 짓은 하지 말자

0개의 댓글