[Spring] Access Token 블랙리스트 관리하기
·
Backend
🎉 개요로그인 기능을 구현하고 테스트 하던 중, Access Token을 새로 발급 받았는데도 발급 전의 Access Token으로 여전히 접근이 가능하다는 것을 알게 되었다. 이는 이전 토큰의 만료 기간이 남았기 때문에 해당 토큰이 유효하다고 인식하여 발생한 일이었다. 만약 이전 토큰이 탈취된 경우라면, 새 토큰이 발급되었음에도 탈취한 토큰으로 계속 접근이 가능하므로 보안상 문제가 생길 수 있다. 따라서 이전의 토큰을 무효화하여 접근할 수 없도록 해야 한다. 이 문제를 해결하기 위해 이전 토큰들을 블랙리스트에 넣어서 관리하는 방법을 선택했다. 스프링 시큐리티 관련 코드는 이전에 정리했으니, 블랙 리스트에 넣는 과정만 기록하려고 한다. [Spring] Spring Security JWT 로그인 구현하기..
[Web] 웹 소켓(Web Socket)이란?
·
Backend
프로젝트에서 웹 소켓을 활용한 기능을 개발하기 전에, 웹 소켓에 대해 먼저 공부하려고 한다. 💡 웹 소켓의 등장 배경가장 많이 쓰는 인터넷 통신 방식 중 하나는 HTTP를 이용한 클라이언트-서버 모델이다. 클라이언트가 서버에게 요청하고, 서버가 이에 응답하는 통신 방식이다. 하지만 이 방식은 실시간으로 데이터를 주고받는 데 한계가 있다. 클라이언트가 서버에게 요청하지 않는 이상, 서버는 클라이언트에게 먼저 데이터를 보낼 수 없다. 또한, 클라이언트는 항상 새로운 데이터가 있는지 확인하기 위해 서버에게 지속적으로 요청을 보내야 한다.  그러면 불필요한 트래픽이 증가되고, 이로 인해 서버의 비용이 증가한다. 그리고 요청과 응답 사이의 지연 시간이 있어 실시간 통신의 효율성을 저하시킬 수 있다.  이와 문제..
[Spring] Spring Security JWT 로그인 구현하기(with Redis)
·
Backend
📝 개요앞에서 JWT에 대해 대략적으로 알아봤으니, 이제는 JWT를 사용한 Spring Security 로그인을 구현하려고 한다. 이때, Refresh Token을 저장하기 위해 Redis를 사용하려고 한다. [Spring] JWT(JSON Web Token)란?스프링 시큐리티를 사용한 로그인(with JWT)을 구현하기 전, JWT에 대해 간단하게 알아보려고 한다! 🔎 JWT 개념JWT는 사용자 인증 정보를 JSON 형태로 안전하게 전달하는 Claim 기반 웹 토큰으로, Base6guswls28.tistory.com 👤 로그인 과정 알아보기AccessToken과 RefreshToken을 사용한 로그인 과정클라이언트가 ID, PW로 서버에게 인증을 요청한다.서버는 이를 확인하고 AccessToken..
[Spring] JWT(JSON Web Token)란?
·
Backend
스프링 시큐리티를 사용한 로그인(with JWT)을 구현하기 전, JWT에 대해 간단하게 알아보려고 한다! 🔎 JWT 개념JWT는 사용자 인증 정보를 JSON 형태로 안전하게 전달하는 Claim 기반 웹 토큰으로, Base64로 인코딩되어 클라이언트 - 서버 간 권한 검증에 사용된다.  🔧 JWT 구조JWT는 Header, Payload, Signature 총 세 부분으로 구성된다. 각 부분을 .을 이용해서 연결하고, 이 값을 Base64로 인코딩하여 JWT를 생성한다. 생성한 JWT는 HTTP 요청 시 Authorization 헤더에 Bearer JWT 토큰 형태로 전달된다.{ "Authorization": "Bearer {JWT 토큰}"} HeaderHeader는 JWT에서 사용할 토큰의 타입과 ..
[Spring] 객체 지향 설계와 스프링
·
Backend
본 글은 인프런 김영한 님의 스프링 핵심 원리 기본편을 수강하고 정리한 내용입니다. 스프링 생태계스프링 프레임워크핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, ...웹 기술: 스프링 MVC, 스프링 WebFlux데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원테스트: 스프링 기반 테스트 지원...최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용함스프링이라는 단어는 문맥에 따라 다르게 사용됨스프링 DI 컨테이너 기술스프링 프레임워크스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계+) JPA는 표준 인터페이스, 하이버네이트는 JPA 구현체 스프링 부트스프링을 편리하게 사용할 수 있도록 지원하는 것으로, 최근에는 기본으로 사용하고 있음단독으로 실행..
[Error] 셧다운 포트가 설정되지 않았습니다.
·
Backend
에러 발생자바 웹 개발 워크북이라는 책으로 서블릿의 생명주기에 대해 간단하게 공부하던 중, destroy() 메소드가 제대로 호출되고 있지 않은 것을 확인했다. 로그를 확인하니 `셧다운 포트가 설정되지 않았다`라는 에러가 발생했다. 해결 방안server.xml 파일의 Server port가 -1로 설정되어 있으면 이러한 에러가 발생한다고 한다. 즉, 에러 그대로 셧다운 포트가 설정되지 않아서 발생하는 에러였다. 따라서 Server port의 값을 8005로 바꿔주면 끝이다!  톰캣이 사용하고 있는 기본 포트가 8005, 8009, 8080이라 그런 듯! 톰캣 폴더의 server.xml 파일 찾기 변경 전 변경 후  셧다운 포트를 8005로 변경하고 나면 서블릿의 destroy() 메소드가 제대로 호출되는..