일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 스프링 부트 기능
- 빈생성안됨
- ERD 작성
- 스프링 부트 공식 문서
- JPA주의사항
- Unsatisfied dependency
- Filter
- 최종 프로젝트
- queryDSL
- uncheck Exception
- spring서버
- jpa에러
- JoinColumn
- Spring Spring boot 차이
- jpa회원가입
- git
- JPA
- jwt메서드
- Q 클래스
- Error creating bean with name
- 스프링부트오류
- json gson 차이
- @IdClass
- 복합키
- REST API 규칙
- 1차캐시
- REST란
- github
- json
- 인텔리제이
- Today
- Total
목록2023/08 (26)
Everyday Dev System
서버에서 발급한 Access Token 및 Refresh Token을 어디에 저장해야 할까? 현재 상황 현재 제 프로젝트에서 JWT 토큰을 활용합니다. Access Token이 탈취됐을 때 대비를 위해 Refresh Token 개념을 도입하여, 두 토큰 모두 쿠키에 저장했습니다. 쿠키에 담아 JS 파일에서 토큰 여부를 확인하기 위해 setHttpOnly()를 설정하지 않았습니다. 문제점 클라이언트 측에서 둘다 갖고 있으면 탈취 당할 가능성이 있지 않을까? 고민 먼저, JWT 인증은 서버가 상태를 갖지 않아 클라이언트 측에서 토큰을 저장하고 있어야 합니다. 클라이언트가 사용할 수 있는 저장소는 쿠키, 세션 스토리지, 로컬 스토리지가 있습니다. 이 중 어떤 저장소에 저장할지 선택하기 위해 각 저장소별 차이점..
Access Token과 Refresh Token을 처리할 때 문제점을 발견했습니다. 로직을 요약하면, 클라이언트의 로그인 요청 서버에서 Access Token과 Refresh Token 생성 및 반환 (Refresh Token Redis에 저장) 클라이언트에서 Access Token과 Refresh Token을 쿠키에 저장 (HttpOnly설정) 이와 같습니다. 먼저, Access Token이 만료되기 이전에 요청은 Spring Security Filter Chain을 잘 거쳐 Controller 단에 도달하여 해당 요청(재발급)을 잘 처리합니다. 문제는 만료된 Access Token 으로 요청시 Controller 단에 도달조차 못 한다는 것입니다. 이는 Filter에서 토큰 검증을 거치기 때문에 검..
Success : AJAX 요청이 성공적으로 완료되면 이 콜백이 트리거됩니다. 응답 상태 코드가 성공을 나타낼 때(일반적으로 2xx 범위) 서버에서 반환된 데이터를 처리하는 데 사용됩니다. 이 콜백에서는 수신된 데이터를 처리하고 조작할 수 있습니다. 오류 : 클라이언트 측이나 서버 측에서 AJAX 요청에 오류가 발생하면 오류 콜백이 호출됩니다. 여기에는 응답 상태 코드가 오류(예: 4xx 또는 5xx 상태 코드)를 나타내는 경우가 포함됩니다. 이 콜백을 사용하면 오류를 처리하고 관리하여 사용자에게 적절한 피드백을 제공할 수 있습니다. Done : AJAX 요청이 성공했는지 또는 오류가 발생했는지 여부에 관계없이 "done" 콜백이 실행됩니다. 결과에 관계없이 AJAX 요청이 완료된 후 수행하려는 작업에 ..
문제점 : js 파일에서 cookie 값을 조회하려고 하였으나, 조회가 되지 않는 문제가 발생했습니다. let token = Cookies.get('Authorization'); console.log(token); 시도 : 1. Cookies.get().value를 하여 저장이 되나 시도해 보았습니다, 그럼에도 계속 undefined 로 출력이 되어 해결되지 않았고, 오히려 value로 값을 저장할 수 없다는 에러가 발생했습니다 let token = Cookies.get('Authorization').value; console.log(token); 2. 쿠키에 값이 setting이 되지 않은 것은 아닌지 get()을 통해 모두 참조해보았습니다. 이 방법 역시 계속 undefined 로 출력이 잘 됐습니다..
서론 먼저, 저는 Spring Secutiry + JWT 를 활용하여 로그인 기능 구현이 선행되었습니다. JWT와 같은 클레임 기반 토큰을 사용하면 Refresh Token을 서버에서 갖고 있을 필요는 없으나, 사용자 강제 로그아웃 기능, 유저 차단, 토큰 탈취 시에 대비하기 위한 방법을 생각해보아야 합니다. Access Token이 발급된 후 서버에 저장되지 않고 클라이언트 측에서 갖고 있는 토큰 자체로 검증을 하여 사용자 권한을 인증하는 것을 Stateless(무상태) 라고 합니다. 그렇기에, Access Token이 탈취되어 토큰이 만료되기 이전까지 유출된 토큰을 통해 인증을 거칠 수 있다는 취약점이 있습니다. 이러한 문제를 보완하기 위해 Access Token의 만료 기간을 줄이고, Refresh..
해당 글에서는 docker 컨테이너에 redis 설치하여 활용하는 방법에 대해서 시도해보겠습니다. 환경 설정 (설치) 먼저 git bash에서 docker로 부터 Redis 공식 이미지를 불러와서 6379번 포트로 Redis를 실행하는 .yml 파일입니다. 해당 파일을 build 시켜줍니다. build 전에 docker desktop을 실행시켜주셔야 합니다. 위와 같이 docker desktop에 해당 이미지가 생성되어 해당 이미지로부터 Redis 컨테이너가 실행되고 있습니다. redis-cli 명령어 실행 cmd를 관리자 권한으로 실행하여 docker exec -it redis bash를 입력하여 Redis 컨테이너를 cli 환경에서 접근할 수 있습니다. Redis는 다양한 자료구조를 지원합니다. St..
Swagger를 활용하기 위해 springfox 라이브러리를 활용하기 위해 시도해보았습니다. // swagger implementation 'io.springfox:springfox-boot-starter:3.0.0' 문제점: Type javax.servlet.http.HttpServletRequest not present 이는 스프링 부트3을 지원하지 않는 라이브러리인 springfox swagger를 시도하다 마주한 문제입니다. 스프링 부트3.1.2 버전인 해당 프로젝트에서 springfox swagger를 사용하기 위해 시도해보았으나, 위와 같은 에러를 마주했습니다. 이는 springfox swagger가 javax 패키지를 jakarta로 변경하지 않아 생기는 문제입니다. Spring Boot 3..
SpringFox 및 Spring Boot 버전의 컨텍스트에서 @EnableSwagger2 및 @EnableSwagger2WebMvc 주석에 차이가 있습니다. @EnableSwagger2: SpringFox 버전 2.x 및 이전 버전에서 사용됩니다. Spring Boot와 Swagger 2 통합을 가능하게 합니다. 최신 버전의 Spring Boot, 특히 Spring Boot 2.5 이상에는 최선의 선택이 아닐 수 있습니다. @EnableSwagger2WebMvc: Spring Boot 2.5+와의 더 나은 호환성을 제공하기 위해 SpringFox 버전 3.x에서 도입되었습니다. Spring Boot의 WebMvc 구성과 잘 작동하도록 특별히 설계되었습니다. 최신 Spring Boot 버전(2.5 이상)..
스케줄링 선점형 메모리 : 우선순위 스케줄링, 라운드 로빈, 다단계 큐 비선점형 메모리 : FCFS (먼저 도착한 작업을 먼저 처리) SJF (수행 시간이 짧은 작업 먼저 처리) HRN (SJF 단점을 보완) → (대기시간 + 실행시간) / 실행시간 메모리 종류 레지스터 : CPU 내에 작은 메모리로, 휘발성, 속도가 빠르고 용량이 적다. (CPU 연산을 위한 저장소이다) 캐시 : L1(CPU 내에 존재) L2(메모리 영역에 존재), L3, 휘발성, 속도가 빠르고, 용량이 적은 편 주기억 장치 : 휘발성, DRAM, 속도 및 용량이 보통 보조기억장치 : HDD, SSD, 속도가 느리고, 용량이 크다. 캐시란? Data를 미리 복사해놓은 임시 저장소이다. 빠른 장치와 느린 장치 속도 차이에 따른 병목 현상..
내일배움캠프 6기 4조 Task Rail 시연영상 - YouTube