본문 바로가기

Back-End173

Spring Security의 JWT(JSON Web Token) 인증 | Refresh Token이 탈취될 경우 자격 증명 방식 HTTP 프로토콜은 요청을 전송하고 응답을 받으면 연결을 끊는 비연결성 특성을 갖는다. 또한, 상태를 저장하지 않는 비상태성 특성을 가지므로 로그인이 성공적으로 수행되어도 서버 측에서는 그 이후에 수신된 요청이 인증된 사용자의 것인지 알 수 없다. 사용자 인증이 성공적으로 이루어졌을 때 사용자의 요청을 유지하기 위한 수단에는 무엇이 있을까? 🧩 세션 기반 인증된 사용자 정보를 서버 측에서 세션 형태로 세션 저장소에 저장한다. 사용자 요청이 올 때마다 서버는 세션 저장소의 세션 정보와 사용자가 보낸 정보(쿠키의 세션 ID)가 일치하는지 확인한다. SSR 방식에 적합한 방식이다. 사용자는 세션 ID만 가지므로 적은 네트워크 트래픽을 사용한다. 세션 정보는 서버 측에서 관리하므로 보안성이 좋다.. 2022. 9. 26.
[Design Pattern] 디자인 패턴의 정의와 종류 소프트웨어 디자인 패턴 디자인 패턴이란 특정 문제(혹은 작업)를 해결하기 위한 잘 입증된 솔루션이다. 소프트웨어 개발 과정에서 발견한 지식과 경험을 통해 재사용 할 수 있는 형태로 규약을 만들어서 정리된 것이다. 디자인 패턴을 사용하면 코드를 유연하고 효율적이게 유지보수 할 수 있다. 아래의 23가지 디자인 패턴을 GoF(Gang of Four) 디자인 패턴이라고 한다. 🎨 Creational Design Pattern 생성 패턴은 객체를 만드는 방식과 관련이 있다. 객체를 생성하는 방법에는 new 키워드를 이용하는 방법이 있지만 프로그램의 특성에 따라 구조를 변경할 경우에 유연성을 제공하지 않기 때문에 좋은 방법이 아니다. Factory Pattern Abstract Factory Pattern Sin.. 2022. 9. 25.
Spring Security 권한 부여 구성 요소 보호되어 있는 글 입니다. 2022. 9. 23.
[Spring Security] 구성 요소 및 인증 과정 인증 처리 흐름 📄 SecurityContextHolder - 인증한 대상에 대한 상세 정보를 담는다. 📗 SecurityContext - SecurityContextHolder에 접근할 수 있으며, 현재 인증한 사용자의 Authentication을 가진다. 📗 Authentication - 사용자가 제공한 credential이나 SecurityContext에 있는 사용자의 credential을 제공하며, AuthenticationManager의 입력으로 사용한다. 📗 GrantedAuthority - 접근 주체(principal)에게 부여된 권한이다. (role) 📗 AuthenticationManager - 필터가 인증을 어떻게 수행할지 정의하는 API이다. 📄 ProviderManager - Aut.. 2022. 9. 22.
[Spring Security] 웹 요청 처리 흐름, 서블릿 필터와 필터 체인 보안이 적용된 웹 요청의 일반적인 흐름 사용자가 보호된 리소스를 요청한다. 인증 관리자(컴포넌트)가 사용자의 크리덴션(Credential, 증명 수단)을 요청한다. ex) 패스워드 인증 관리자에게 크리덴션을 제공한다. 인증 관리자는 크리덴션 저장소에서 사용자의 크리덴션을 조회한다. 인증 관리자는 사용자가 제공한 크리덴션과 크리덴셜 저장소의 크리덴션을 비교해 검증한다. 유효한 크리덴션이 아니면 Exception을 throw 한다. 유효하다면, 접근 결정 관리자(컴포넌트)는 사용자가 적절한 권한을 가지고 있는지 검증한다. 적절한 권한을 부여받지 못한 사용자라면 Exception을 throw 한다. 권한이 있는 사용자라면 보호된 리소스의 접근을 허용한다. 서블릿 필터와 필터 체인 Spring Security는.. 2022. 9. 22.
[HTTPS] 인증 및 보안 (feat. 공개키와 대칭키) HTTP와 HTTPS Hyper Text Transfer Protocol Secure Socket layer HTTP란 인터넷에서 데이터를 주고받을 수 있는 통신 프로토콜을 말하며, 80포트를 사용하고 있다. TCP/IP 위에서 동작하며 확장이 가능하다. 오늘날 하이퍼텍스트 문서 뿐만 아니라 이미지, 비디오, HTML 폼 결과와 같은 내용을 서버에 POST 하기 위해서도 사용된다. Stateless이기 때문에 이전 통신에 대한 정보를 기억하지 않으며, Conectionless 특성 또한 가져서 서버가 요청에 대한 응답을 마치면 연결을 끊는다. 암호화되지 않은 평문 데이터를 전달하는 프로토콜이기 때문에 기밀한 정보를 주고받기에는 적절하지 않다. 따라서 HTTPS가 등장했다. HTTPS는 SSL 혹은 TLS.. 2022. 9. 20.