Back-end/SpringBoot10 [Security] 내 security filter chain 구조 이번에 간단한 팀 프로젝트로 인증을 맡게 되었다.정말 많이 배울 수 있었는데, 앞으로도 많은 걸 해야하는 것이구나라고 깨달을 수 있어서 더 의미있는 경험이었다 생각한다. 현재 이 security filter chain에 대한 대략적인 구조도를 기록하고, 나아갈 방향들을 적으려 한다. 1. 구조도 Client에서 요청이 오면 먼저 필터를 거치게 되는데, 내가 설계한 필터 순서는 다음과 같다. 1. logging filter: 거쳐서 들어오는 모든 요청들과 응답들을 찍을 수 있게 하여 디버깅할 때 도움을 줄 수 있도록 함.2. ratelimit filter: bucket4j를 redis에 연결하여서 login 등 인증 api 접근 시 버킷을 차감하여, 정책 상 정해 놓은 상한선을 넘을 시 429 에러를.. 2025. 6. 22. [Security] refresh token rotation 방식을 쓰는 이유 PREV. 서론refresh token rotation 방식을 도입하게 되면서 첫 번째 구조로서 refresh token을 redis에 access token을 http-only cookie에 두어서 해결하려 했다. 하지만 만료된 access token으로도 user를 식별할 수 있는 로직 설계에서 어렵다는 생각을 하였고, 또한 세션 기반 인증 방식에 가깝다는 생각이 들었다.그러한 생각의 대안으로 OIDC,OAuth 2.1의 흐름에 따라, Refresh Token을 쿠키로 내리는 정책으로 진행했다. 토큰 자체에 상태가 담겨있고, Redis는 단지 대조,회전만을 목적으로 하여 jwt 방식과 비슷하다고 생각하였다. 1. Refresh Token Rotation이란 무엇인가?정의Refresh Token Rot.. 2025. 6. 3. [Security] JJWT 적용.... 결론적으로 이번 프로젝트에서는 JWS만 사용하여서 관리할 것 같다. 무결성을 보장하는 정도로도 충분할 것 같으며, 애초에 userId, 이름 정도만 claim에 들어갈 것이기 때문에 연산, 키 관리 시의 연산량 측면을 고려해봤을 때 JWS로도 충분하다고 생각했다. 현재 공식 페이지에서 제공하고 있는 종속성은 다음과 같다.또한 다음과 같이 runtime 종속성으로 부여한 이유를 설명하고 있다. 💡JJWT는 애플리케이션에서 사용하도록 명시적으로 설계된 API에만 의존하도록 설계되었으며, 경고 없이 변경될 수 있는 기타 모든 내부 구현 세부 사항은 런타임 전용 종속성으로 분류됩니다. 안정적인 JJWT 사용과 지속적인 업그레이드를 위해서는 이 점이 매우 중요합니다.dependencies { impleme.. 2025. 5. 24. [Security] JWT란? 이번 팀 프로젝트에서 인증을 맡게 되어 전반적인 인증 구조 설계와 더불어서 구성 요소에 대한 이해를 하려 한다. JWT(JSON WEB TOKEN) 필터를 구현하다가, 정작 JWT에 대한 이해도가 적다고 느껴져 기록한다.JWTJSON Web Token(이하 JWT)의 약자로 정보를 간결하고 안전하게 전송하기 위한 범용 텍스트 기반 메시징 형식이다. JWT는 모든 유형의 데이터에 대한 메시지로 사용될 수 있다.JWT의 기본 구조JWT의 신원 정보를 담고 있는 payloadheader는 키/밸류 쌍으로 구성되어 있고 payload와 자신의 메시지에 메타데이터를 JSON 객체로 나타낸 것이다.payload는 JSON Claims 객체라고 불리고, 각각의 정보는 claim 이라고 부를 수 있고 신원에 대한 정보.. 2025. 5. 24. asynchronous? non-blocking? - WebClient https://tecoble.techcourse.co.kr/post/2021-07-25-resttemplate-webclient/ RestTemplate과 WebClient이 글은 자바에서 HTTP 요청을 써봤거나 써보려고 하는 독자를 대상을 작성하였습니다. 스프링 어플리케이션에서 HTTP 요청할 때 사용하는 방법으로 RestTemplate과 WebClient가 있다. 스프링 5.0 이전까tecoble.techcourse.co.krWebClient를 적용하기 위해서 읽어보았는데, 내 안에 흔들리는 개념들을 발견했다. 후에 궁금할 때 볼 수 있도록 포스팅한다.. 우선 WebClient란? HTTP 요청할 때 사용하는 방법 중 하나이다.다른 것은 RestTemplate인데, WebClient가 상대적으로 .. 2025. 5. 1. RestTemplate를 사용 시에 encoding 이슈를 해결하는 방법 https://life.photogrammer.me/openapi-servicekey-encoding-problem/ 공공 데이터 Open API 삽질기공공 데이터 Open API 에서 Service Key 인코딩 문제 해결기life.photogrammer.me이 페이지를 참고하여 해결했다. RestTemplate에서는 execute 시에 URL로 바꿔서 요청을 실행하는데, encoding 이슈가 계속 생겨서 service_key_not_registered가 나왔다..따라서 encdoing 옵션을 없애주고, URI 객체를 그대로 넘기도록 설정해주니, 해결되는 것을 확인할 수 있었다. DefaultUriBuilderFactory uriBuilderFactory = new Defa.. 2025. 5. 1. 이전 1 2 다음