[Spring Security] anonymous
📌 익명 사용자 표현 방법의 변화 이전 인증 시스템에서는 인증되지 않는 사용자를 null 로 표현하는 경우가 많았다. 그러나 이는 코드에 user == null 과 같은 수많은 검증 로직 작성의 배경이 되었으며, NullPointerException 을 항상 고려해야 했다. 이러한 문제를 Spring Security는 ‘존재하지 않음’이라는 상태를...
📌 익명 사용자 표현 방법의 변화 이전 인증 시스템에서는 인증되지 않는 사용자를 null 로 표현하는 경우가 많았다. 그러나 이는 코드에 user == null 과 같은 수많은 검증 로직 작성의 배경이 되었으며, NullPointerException 을 항상 고려해야 했다. 이러한 문제를 Spring Security는 ‘존재하지 않음’이라는 상태를...
📌 인증 메커니즘 원리 HTTP Basic Authentication 은 특정 리소스에 대한 접근을 요청할 때 사용자에게 username 과 password 를 확인하여 인가를 수행하는 방법이다. 클라이언트가 보호된 리소스에 접근하면 서버는 Authorization 헤더의 존재 유무를 확인하고, 응답의 WWW-Authenticate 헤더에 Basi...
📌 개요 사용자가 자격 증명을 입력하면 어떤 과정을 거쳐 사용자를 인증하게 될까? 그 과정에 대해 알아보자. 📌 UsernamePasswordAuthenticationFilter이란? UsernamePasswordAuthenticationFilter 는 보안 필터 중 하나로 POST 요청으로 들어온 자격 증명을 토대로 인증을 수행한다. 📌 자격...
📌 formLogin 메서드란? formLogin 메서드는 로그인 폼을 통한 인증을 쉽게 구현할 수 있도록 하는 기능이다. 📌 formLogin API loginPage loginPage 는 Spring Security가 기본적으로 제공하는 로그인 폼 대신 개발자가 만든 커스텀 로그인 폼을 사용하려고 할 때 사용한다. loginProcessi...
📌 Filter Spring Security는 Filter 를 기반으로 동작한다. Filter 란 무엇일까? 클라이언트가 WAS, Web Application Server에 요청(HttpServletRequest)을 보내면 서블릿 컨테이너는 URI와 Servlet 을 보고 FilterChain 을 생성한다. 요청은 최종적으로 Servlet 에...
📌 WebSecurity WebSecurity 는 전역적인 보안을 담당한다. SecurityBuilder 의 구현체로 FilterChainProxy 를 생성 및 설정하는 역할을 한다. FilterChainProxy 는 모든 웹 요청을 가장 먼저 받아 어떤 SecurityFilterChain 을 적용할지 결정한다. @Bean public WebSe...
📌 JWT란? JSON Web Token(JWT) 는 두 개체 간 JSON 객체를 사용하여 안전하게 정보를 전송하기 위한 표준이다. ‘인증’ 과정에서 JWT를 사용한다. 사용자가 로그인하면, 서버는 사용자의 정보와 권한을 담은 JWT를 발급한다. 이후 사용자는 JWT를 통해 자신을 증명하고, 서버는 JWT의 유효성만 검증하면 된다. 📌 구조 ...
📌 BFS란? Breath-First Search, BFS 는 그래프를 탐색하는 알고리즘이다. 출발 노드로부터 가까운 노드부터 우선적으로 탐색한다. 이는 레벨 단위로 진행된다. 📌 동작 방식 먼저 시작 노드를 선택하고, 거리를 0으로 설정한다. 거리가 d 인 모든 노드들을 확인하며 해당 노드와 연결된 노드들 중 방문하지 않는 노드들을...
📌 개요 하나만 짚고 넘어가자. JPA 의 쿼리 언어는 JPQL 이다. JPA 의 구현체 중 하나는 Hibernate 이며, Hibernate의 쿼리 언어는 HQL 이다. 사실 하나가 아니고 세 개다. 내가 ‘구현’이라고 하지 않았는가? JPA라는 인터페이스를 구현한 것이 Hibernate이다. 이는 곧 Hibernate가 독자적인 기능을 가질 수...
📌 개요 Spark에서 자주 사용되는 파일 포맷에 대해 알아보자. 📌 JSON JavaScript Object Notation, JSON 은 key-value 구조를 가진 텍스트 기반 포맷이다. 사람이 쉽게 읽고 쓸 수 있으며, 계층적 구조를 표현할 수 있다는 특징이 있다. 매우 유연한 구조를 가지고 있다. JSON 내부에 객체가 있다면 스파크...