본문 바로가기
728x90

분류 전체보기138

[스프링 시큐리티] redis를 이용한 jwt 로그아웃 만들기 오늘은 redis를 이용해서 jwt 로그아웃 기능을 포스팅 해보겠습니다. 우선, 간단하게 redis를 왜 이용해야 하는지 고민해보겠습니다. 왜 redis를 사용할까? 바로 로그아웃을 요청한 access token이 만료될 때까지 access token으로 오는 요청을 막기 위해서입니다. 아직 좀 부족하죠?? 그래서 왜 redis인데? 그렇다면 access token이 만료가 될 때까지 어딘가에 저장이 되어있어야 하지 않을까요? 음... access token이 어딘가에 저장되고 그 어딘가에 저장이 되어 있으면 api 요청을 못하게 하면 되지 않을까요? 음... 그러면 어딘가에 저장을 하는데... 일정 시간(만료시간)이 지나고 저절로 삭제가 될 수는 없을까? 위의 모든 의문을 해결해주는 것이 레디스 였습니.. 2023. 1. 31.
[스프링 시큐리티] custom한 authentication받기 오늘은 jwt 토큰을 이용해서 로그인/로그아웃을 구현하던 중 만난 어려움에 대해서 포스팅 해보려고 합니다. 어려움을 만날 때까지의 과정 - 구글링을 통해서 로그인 기능 구현 - 토큰 값 없이 API요청을 할 경우 401에러와 권한이 없다는 메세지 출력 이후 로그아웃 기능을 구현하기 위해 controller로 넘어온 데이터를 확인하던 중 내가 커스텀한 데이터로 Authentication이 왔으면 좋겠다는 생각이 들었습니다. 수 많은 구글링을 해본 결과 방법은 3가지가 있습니다. 1. Authentication의 .getName()을 해서 데이터베이스에서 데이터를 조회하는 것입니다. @GetMapping("test") public ResponseEntity test( Authentication authent.. 2023. 1. 25.
[ci/cd] 도커를 이용해서 젠킨스 로컬로 띄어보기!! 안녕하세요. 이번 포스팅은 도커를 이용해서 젠킨스를 로컬로 띄어보겠습니다! docker desktop을 설치할 수 있는 경로입니다. https://www.docker.com/products/docker-desktop/ Docker Desktop | Docker Docker Desktop is available to download for free on Mac, Windows, or Linux operating systems. Get started with Docker today! www.docker.com 도커는 모든 분들이 문제없이 설치했을 것이라고 예상해보겠습니다. 명령어로 docker images를 입력한 뒤 실행하면 이미지들을 확인할 수 있습니다. 이번에는 젠킨스의 이미지를 다운받아 볼건데요! h.. 2023. 1. 3.
JWT 토큰에 대해서 알아보자! 이번 글에서는 JWT에 대해서 알아보겠습니다. JWT(JSON Web Token) - 유저를 인증하고 식별하기 위한 토큰 기반 인증입니다. 그렇다면, 여기서 토큰 기반 인증은 무엇일까요? -> 클라이언트가 서버에 접속을 하면 서버에서 해당 클라이언트에게 인증되었다는 의미로 '토큰'을 부여합니다. -> 이 '토큰은' 유일하며 토큰을 발급받은 클라이언트는 또 다시 서버에 요청을 보낼 때 요청 헤더에 토큰을 심어서 보냅니다. -> 마지막으로 서버에서는 클라이언트로부터 받은 토큰을 서버에서 제공한 토큰과 일치 여부를 체크하여 인증 과정을 처리합니다. -> 토큰은 세션과 달리 서버가 아닌 클라이언트에 저장되기 때문에 메모리나 스토리지 등을 통해 세션을 관리하던 서버의 부담을 줄일 수 있습니다. - JWT는 인증에.. 2022. 11. 9.
Cascade, OrphanRemoval 사용 주의 이번에 특정 기능을 개발한 후 만났던 버그에 대한 정리 및 회고 포스팅입니다~! 상황 설명 ㅠㅠ 기존에 A 라는 객체에 대해서 생성, 삭제, 수정의 기능이 있었습니다. 이때, 저는 A를 복사하는 기능을 개발했었습니다. 정말 엄청난 고생을 하면서 복사하는 기능을 만들고 테스트하고 QA팀도 통과하고 배포 후 테스트까지 성공하면서 다행이다~! 라는 생각을 하고 앞으로 행복한 날만 남았다고 생각하며(물론... 저의 첫 기능 개발이었지만 ㅎㅎ) 행복한 주말을 보내고 월요일에 출근을 했습니다. 이때.... 갑자기 A의 특정 값을 지우고 업데이트를 할 때 특정 값이 지워지지 않는 버그가 발생한다는 소식을 들었고 저는 급하게 원인을 분석하게 되었습니다. 그리고... 그 다음날 급하게 핫픽스를 진행하게 되었습니다...... 2022. 2. 5.
객체지향 설계란? - 3. LSP 이번 포스팅에서는 solid의 3번째 원칙인 lsp에 대해서 알아보겠습니다! LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 LSP에 대해서 설명하기에 앞서, 객체지향의 대해서 조금 이야기 해보겠습니다. -객체지향에서의 상속은 조직도나 계층도로 표현되면 안됩니다. 조직도 같은 경우, 분명 다른 존재임에도 같은 기능을 요구할 수 있기 때문입니다. 따라서,객체지향은 분류도로 표현해야합니다. 이 이야기에 대해서는 밑에서 그림으로 좀 더 이야기 해보겠습니다. - 서브타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 합니다. - 하위 클래스의 인스턴스는 상위 클래스의 인스턴스 역할을 수행하는데 문제가 없어야 합니다. 위의 문장을 정리하면 하위클래스 is a kind of .. 2022. 1. 16.
728x90