UsernamePasswordAuthenticationFilter UsernamePasswordAuthenticationFilter 1. 사용자가 로그인을 하려고 시도 하면 UsernamePasswordAuthenticationFilter가 유효한 경로인지 확인 2. 앞에 보낸 url 정보가 AntPathRequestmatcher에 있는 url과 동인한지에 따라 yes, no를 구분함. 3. url매칭이 되면 UsernamePasswordAuthenticationFilter가 username과 password를 가지고 Authentication 객체를 만듬. 4. AthenticationManager에 사용자 인증요청을 함. AthenticationManager(인증작업을 수행) 5. Athenticat..
스프링 시큐리티 의존성 추가 및 기능 의존성 추가하는 코드 (pom.xml에 추가) org.springframework.boot spring-boot-starter-web 서버가 기동되면 스프링 시큐리티의 초기화 작업 및 보안 설정이 이루어진다. 별도의 설정이나 구현을 하지 않아도 기본적인 웹 보안 기능이 현재 시스템에 연동되어 작동함. 모든 요청은 인증이 되어야 자원에 접근이 가능하다. 인증 방식은 폼 로그인 방식과 httpBasic로그인 방식을 제공한다. 기본 로그인 페이지 제공한다. 기본 계정 한 개 제공한다. - username (user)/ password (랜덤) 인증 API - 사용자 정의 보안 기능 구현 WebSecurityConfigurerAdapter 메소드 configure(HttpS..
JWT JWT는 유저를 인증하고 식벽하기 위한 인증 방식이다. 토큰은 세션과는 달리 서버가 아닌 클라이언트에 저장되기 때문에 메모리나 스토리지 등을 통해 세션을 관리했던 서버의 부담을 덜 수 있다. JWT가 가진 핵심적인 특징이 있다면, 토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 개인 정보가 포함이 되어 있다는 것(Self-Contained)이다.사용자가 가져야하는 데이터가 많아지면 당연히 토큰이 가지고 있어야하는 양도 커져야 하며, 한 번 토큰을 발급한 후 사용자 정보가 바뀌더라도 새로운 토큰을 발급하지 않으면 서비스를 사용하지 못하게 되어있다. JWT를 사용하면 무상태(Stateless)인 환경에서 사용자 데이터를 주고 받을 수 있게된다. 세션(session)을 사용하게 될 경우에는 쿠..
CIA(Confidentiality, Integrity, Avaliability) CIA는 데이터 가져야 하는 3가지의 속성이라고 생각하면 된다. 아래 세가지의 속성은 균형을 가추고 있는 속성으로 하나라도 문제가 생기면 기밀성, 진실성, 유효성이 깨짐. 기밀성 (Confidentiality) : 보안과 같은 의미로 승인되지 않은 사용자가 사용하지 못하게 하는 것을 말함. 무결성 (Integrity) : 변경되지 말아야 하는 정보가 특별한 승인을 가지는 경우가 아닐 때, 변경 되지 않아야 한다는 것을 말함. 가용성(Avaliability) : 승인을 받은 사용자가 문서를 읽을 수 있는 것을 말함. RSA 이 체제를 개발한 Ron Rivest, Adi Shamir, Leonard Adleman 세 사람의 성..
OSI 7계층 네트워크에서 통신이 일어나는 과정을 7단계로 나눈것이다. 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악하고 중간에 문제가 생길경우, 파악하기 좀 더 쉽다. 응용 계층 (Application Layer) : 데이터를 받을 수 있게 유저에게 보여지는 계층. 네트워크 소프트웨어 UI부분, 사용자의 입출력(I/O)를 담당함. 프리젠테이션 계층 (Presentaion Layer) : 암호화 및 압축을 담당하는 계층. 코드 간의 번역을 담당하고 인코딩이나 암화등의 동작을 수행 세션 계층 (Session계층) : 데이터를 받는 상대방이 데이터를 받을 수 있는지 여부를 확인하는 계층. 트랜스포트 (Transport Layer) : TCP 또는 UDP 프로토콜을 이용하여 데이터를 받는 부분임. ..
Session 세션이란 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 말한다. 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고함. Cookie 쿠키는 서버에서 받은 세션정보를 사용자가 저장한 것을 말하는데 이러한 저장과정을 거치는 이유는 매번 서버에 접근할 때마다 세션을 생성하는것은 서버에 많은 무리가 가고 느려지기 때문에 이러한 정보를 사용자가 가지게 함. 세션형성과 쿠키 최초로 client가 웹에 접근시 server가 세션을 만들어서 client에게 보냄 최초로 server에서 respond시 http headers에 세션ID 을 담아서 보냄. 세션을 받은 client는 해당 세션을 쿠키에 저장함. 이후 다시 같은 server에 접속시 쿠키를 server..