백엔드52 [Security] 시큐리티 파헤치기 (3) : 시큐리티 초기화, 다중 필터 체인 🙋 들어가며 이번 글에서는 시큐리티가 어떻게 초기화되고 어떤 값들이 생성되는지 알아보겠습니다. 시큐리티는 여러 개의 필터 체인을 관리할 수 있는데 어떻게 설정하는지 알아보겠습니다. 그리고 요청이 어떻게 알맞은 필터 체인에 타고 흐르는지도 알아보겠습니다. 📁 설정 파일 작성 (feat. Security 6) 시큐리티를 사용하기 위해서는 우선 설정 파일을 작성해야 합니다. 다음과 같이 단 어노테이션 하나만 달아주면 기본적인 시큐리티 설정이 완료됩니다. @Configuration @EnableWebSecurity // 기본 시큐리티 설정 public class SecurityConfig { } 바로 @EnableWebSecurity 입니다. 전혀 복잡하지 않죠? 😋 단순히 달아주기만 하면 애플리케이션이 메모리.. 2023. 8. 11. [Security] 시큐리티 파헤치기 (2) : RequestCacheAwareFilter, RequestCache 🙋 들어가며 스프링 시큐리티 필터에는 다양한 필터들이 존재합니다. 오늘은 그중에서 인증, 인가를 위해서 가로채진 요청을 어떻게 다시 수행하는지 알아보겠습니다. ↩️ RequestCacheAwareFilter 이름에서 어떤 역할을 하는지 대략적으로 알 수 있습니다. 대충 요청에 대한 캐시를 알고 있는 필터 같습니다. 동작을 이해하기 위해서는 내부적으로 무엇을 가지고 있는지 알아야 합니다. 🏛️ 시큐리티 아키텍처 시큐리티는 결국 인증과 인가를 위한 프레임워크입니다. 인증을 위한 Authentication Manager와 인가를 위한 Access Decision Manager가 핵심입니다. 요청한 자원이 인증이 필요하다면 요청을 가로채 인증한 뒤 다시 원래 요청으로 되돌아가야 합니다. 시큐리티는 Reques.. 2023. 8. 2. [Java] Optional 바르게 사용하기 🙋 들어가며 자바 기반의 백엔드 개발자가 Optional을 제대로 접하는 순간은 JPA의 query method를 사용할 때라고 생각합니다. Optional이 사용하기 편한 객체이지만 사용할 때 주의점을 요합니다. 이 글에서는 Optional에 대한 저의 고찰과 올바르게 사용하는 방법에 대해 이야기해 보겠습니다. 🧐 Optional의 목적 모든 사물들은 각자에게 주어진 알맞은 쓰임이 존재합니다. 예를 들어서, 책은 읽기 위해서 존재합니다. 라면 받침으로 쓰는 것은 본디 목적을 잃는 것입니다. (물론 라면 받침으로 씁니다) 그렇다면 Optional의 쓰임은 무엇일까요? 자바 설계자가 언급한 의도를 가져왔습니다. Our intention was to provide a limited mechanism for .. 2023. 6. 22. [객체지향의 사실과 오해] 4장 : 역할, 책임, 협력 🙋 들어가며 모든 일에는 일련의 흐름이 존재합니다. 연애를 하고 싶다고 무작정 고백하면 그냥 혼쭐 내는 것과 다를 바가 없습니다. 서로를 알아가는 썸이라는 단계를 밟고 고백을 해야만 비로소 연애를 시작할 수 있습니다. 객체지향의 세계에서도 마찬가지입니다. 먼저 객체의 행동과 상태을 고려하는 것은 고백으로 혼내주는 것입니다. 우리는 도메인을 먼저 분석하고 어떤 흐름으로 해결할지 고민하는 것이 중요합니다. 이 흐름이 바로 문맥(Context)입니다. 객체지향 세계에서 객체들은 문맥을 속에서 서로 협력합니다. 이번 장에서는 바로 문맥에 맞게 협력을 고려하기가 주제이자 핵심입니다. 🗣️ 협력 객체가 협력하는 가장 중요한 이유는 동일한 목적을 이루기 위함입니다. 그렇다면 왜 협력이 중요할까요? 간단한 예로 들.. 2023. 6. 19. [Spring] 트랜잭션 사용 조심하기 😇 들어가기 앞서 로그인 실패 시 핸들링을 구현하면서 발생했던 트랜잭션으로 발생했던 이슈가 있어서 공유하고자 합니다. 트랜잭션에 대해서 추가적인 내용들은 따로 정리를 할 예정입니다. 🙋 트랜잭션이란? 하나의 작업의 단위를 트랜잭션이라고 합니다. 스프링에서는 트랜잭션을 편하게 사용할 수 있도록 AOP와 어노테이션 기반으로 동작합니다. 우리가 꼭 짚고 넘어가야 것은 트랜잭션은 기본적으로 상위 트랜잭션에 포함된다 입니다. 1️⃣ 로그인 실패 로그인 실패 핸들링은 다음과 같은 요구사항을 가집니다. 로그인 실패 시 로그인 실패 회수를 카운팅한다. 카운팅한 결과를 예외에 담아서 던진다. 코드는 다음과 같이 작성했습니다. 인증을 진행하다가 BadCredentialsException가 발생하면 핸들링 로직을 실행합니다.. 2023. 5. 29. [후기] 프로그래머스 백엔드 데브코스 4기 합격 후기 😎 데브코스 합격 후기 😎 하반기 채용을 노리고 있는 저는 남은 기간 동안 무언가 전문적인 교육을 받아보고 싶어서 데브코스를 지원했습니다. 최종합격까지의 과정들을 적어보고 난이도, 면접 질문 그리고 느낀 점들을 공유해 보겠습니다! 🧐 왜 데브코스? 선택에 여러 가지 이유가 있지만 결정적인 이유는 다음과 같습니다. 교육 기간 : SSAFY의 경우 기간이 1년이나 됩니다. 너무 과투자라고 생각하기 때문에 6개월인 데브코스를 선택했습니다. 클라우드 : 지난 프로젝트에서 DevOps의 힘듦을 많이 느꼈는데 커리큘럼이 보다 세부적이었습니다. 많은 프로젝트 : 개인 프로젝트부터 팀 프로젝트 2개, 그중 하나는 프론트 교육생과 협업을 진행합니다. 📑 지원서 작성 어떤 부트 캠프이던 꼭 지원서를 통해서 자기가 어떤 사.. 2023. 5. 23. 이전 1 2 3 4 5 ··· 9 다음