Spring Security ..
근데 왜 이리 어려운 거야?.. 인터넷 강의도 찾아봤다
서블릿부터 개념을 알게 되었다
이 부분은 계속 꾸준히 공부해야 할 것 같다. 양이 많아도 너무 많다..
나중에 공부한 부분 따로 올려서 정리해야지..
Spring Security란?
Spring Security는 자바 기반의 엔터프라이즈 애플리케이션에 대한 포괄적이고 강력한 인증과 권한 부여를 위한 프레임워크. 웹 보안을 제공하는 것은 그 중 한 가지 기능일 뿐이다. 또한 메소드 수준의 보안, LDAP 인증, SSO(single sign-on), OAuth, JWT 등과 같은 다양한 보안 솔루션을 지원한다.
Spring Security는 기본적으로 모든 요청에 대해 인증을 요구하는 보안 구성을 제공하며, 이는 개발자가 필요한 경우 쉽게 커스터마이즈 할 수 있다. 또한 Spring Security는 세션 관리, CSRF 보호, CORS 설정 등과 같은 보안 관련 기능도 제공한다.
인증(Authentication)은 사용자가 누구인지 확인하는 과정을 말하며, 권한 부여(Authorization)는 해당 사용자가 어떤 작업을 수행할 수 있는지 결정하는 과정을 말한다. Spring Security는 이 두 가지 주요 보안 요소를 제어하는 데 있어 매우 유연하게 설계되어 있다.
Spring Security를 이용하면, 개발자는 보안에 관련된 복잡한 이슈를 직접 처리하는 것이 아니라, Spring Security가 제공하는 다양한 기능을 이용하여 애플리케이션의 보안을 강화할 수 있다.
크리덴셜(Credential)란?
크리덴셜(Credential)이란, 사용자의 신원을 입증하기 위해 사용되는 정보나 객체를 말한다. 보통은 사용자명과 비밀번호와 같은 조합이 사용되며, 이를 통해 사용자의 신원을 인증하는 시스템에 로그인하는 데 사용된다.
크리덴셜은 사용자의 정당성을 입증하고 해당 사용자에게 허가된 권한을 부여하는 데 필요한 중요한 정보. 따라서 이러한 정보는 매우 민감하며, 보안에 큰 주의가 필요하다. 크리덴셜 정보가 유출되면 악의적인 사용자에 의해 악용될 수 있기 때문이다.
따라서 일반적으로 크리덴셜은 안전하게 저장하고 관리되어야 한다. 예를 들어, 비밀번호와 같은 크리덴셜은 암호화된 형태로 저장되어야 하며, 또한 해당 정보에 접근할 수 있는 권한 역시 엄격하게 제한되어야 한다.
크리덴셜의 종류는 여러가지가 있을 수 있으며, 사용자명과 비밀번호 외에도 디지털 인증서, 바이오메트릭 정보(지문, 안면 인식 등), OTP(One-Time Password), 토큰 등도 크리덴셜에 포함될 수 있다. 이러한 다양한 크리덴셜을 조합하여 다중 요소 인증(MFA, Multi-Factor Authentication)을 구현하기도 한다.
Filter와 FilterChain란?
필터(Filter): 필터는 클라이언트의 요청이 서버에 도달하기 전, 그리고 서버의 응답이 클라이언트에게 전달되기 전에 특정 작업을 수행하는 컴포넌트. 필터는 로깅, 인증, 인코딩, XSS(Cross-Site Scripting) 공격 방지 등과 같은 작업을 처리할 수 있다. 필터는 javax.servlet.Filter 인터페이스를 구현하여 작성되며, doFilter 메소드 내부에서 요청이나 응답에 대한 필요한 처리를 정의한다.
필터 체인(FilterChain): 필터 체인은 여러 개의 필터를 순차적으로 적용하는 메커니즘. 웹 애플리케이션에서 요청이 수신되면, 필터 체인에 등록된 필터들이 순서대로 실행됩니다. 각 필터는 요청을 처리한 후, 다음 필터를 실행하기 위해 FilterChain의 doFilter 메소드를 호출한다. 이 과정이 반복되어 모든 필터가 실행된 후에 실제 서블릿이나 컨트롤러의 메소드가 실행된다.