전체 글 36

Refresh Token 저장 방식

JWT에서 Refresh 토큰에 대한 궁금증을 해결하기 위해 학습한 내용을 정리했다! JWT 기반 인증에서 Refresh Token은 클라이언트와 서버 양쪽에 각각 다른 목적으로 저장된다.1. 클라이언트 측 Refresh Token 저장웹 환경에서 Refresh Token은 보통 HttpOnly Cookie에 저장된다.서버는 로그인 성공 시 아래와 같은 응답을 내려준다. Set-Cookie: refreshToken=xxx; HttpOnly; Secure; SameSite=Strict; 이후 브라우저는:쿠키를 자동으로 저장하고JavaScript에서는 접근할 수 없으며(HttpOnly)해당 도메인 요청 시 자동으로 쿠키를 포함한다프론트엔드에서 Refresh Token을 직접 저장하거나 관리하지 않는다.2...

Spring/JWT 2026.01.13

Spring Security + JWT 인증

기존에 JWT 방식을 사용해 로그인을 구현한 경험이 있지만 ,,이번에 다시 토이 플젝을 하면서 자세히 공부하면서 진행해보려고 한다 JWT(Json Web Token)Spring Security + JWT 인증 구조 정리Spring Security에서 JWT 인증을 구현할 때 JWT 자체보다도 Spring Security가 인증을 어떻게 판단하는지다.Spring Security는 현재 요청에 대한 Authentication 객체가 존재하느냐를 기준으로 인증 여부를 판단한다.그래서 JWT 인증에서는 토큰을 Authentication 객체로 변환해서 SecurityContext에 넣는 과정이 필요하다! 아래의 흐름으로 내용을 정리했다. JWT의 역할Spring Security에서 인증이 동작하는 구조JWT ..

Spring/JWT 2026.01.13

네트워크 (1)

네트워크 - 2대 이상의 장치가 데이터를 주고받도록 유무선으로 연결된 통신망.구성1. 노드 - 네트워크에 연결된 장치(ex| 컴퓨터, 스마트폰, 서버 등)2. 간선(Link) - 노드 간 연결해주는 유선 또는 무선의 통로3. 메세지 - 노드 간 주고 받는 데이터 - 처리량 ( BPS, 초당 데이터 전송량으로 사용자 수에 따른 *트래픽, *대역폭, 장애 발생 빈도, 장비 스펙에 따라 달라짐)- 지연 시간 (데이터 요청부터 응답까지 걸리는 시간)- 장애 빈도 (네트워크가 끊기는 정도)-보안 (데이터가 안전하게 전달되는 것)*대역폭 - 주어진 시간동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수*네트워크 트래픽 - 특정 시간에 네트워크를 통해 이동하는 데이터양 ㅡ네트워크 토폴로지 > 네트워크의 장치들이 ..

카테고리 없음 2025.11.13

자료구조 - 2) ArrayList, LinkedList

ArrayList / LinkedList에 대해 알아보자 - ArrayList란 (배열 기반 리스트)내부적으로 배열(Array)를 사용하고, 데이터가 메모리상에 연속적으로 저장된다. 가장 큰 특징으로 인덱스를 가짐 -> 데이터를 인덱스로 접근 가능하기에 탐색 시 O(1)의 시간 복잡도.데이터를 중간에 삽입 or 삭제 시 다른 인덱스의 데이터를 모두 옮길 가능성이 있어 매우 비효율적 -> O(n)의 시간 복잡도 Java에서 ArrayList를 어떻게 사용할까ArrayList 구현체: 동적 배열 (Dynamic/Resizable Array)내부에 Object[] 같은 일반 배열을 두고, 꽉 차면 더 큰 새 배열로 복사(이사)import java.util.ArrayList;import java.util.Lis..

CS Study 2025.10.30

자료구조(1)- Stack, Queue, Deque

스택과 큐, 덱 자료구조를 살펴보고 자바에서는 어떻게 사용되는지 알아보자 😀 - 스택(STACK)이란스택 자료구조는 쌓아올린 형태의 자료구조로, LIFO(Last In First Out, 후입선출) 구조이다. 가장 최근 들어온 값이 먼저 나간다는 특징을 가졌다.스택에 데이터를 넣을 때(PUSH)도 맨 위에 추가를 하고 뺄 때(POP)에도 위에서부터 뺀다. Push: 스택의 맨 위에 데이터를 추가.Pop: 스택의 맨 위 데이터를 제거하고 그 값을 반환.Peek: 스택의 맨 위 데이터를 제거하지 않고 값만 확인* 스택의 활용 - LIFO구조이기에 나중에 들어온 값이 먼저 나가는 특징이 있다. 예시 1)웹 브라우저에서 뒤로가기나 되돌리기 기능은 가장 최근 했던 작업으로 돌아감예시 2)후위 표기법으로 수식 ..

CS Study 2025.10.29

Web server failed to start. Port 8080 was already in use 해결

스프링 부트 실행하다 Web server failed to start. Port 8080 was already in use. 이 문제로 종료되었다. 스프링이 사용하려는 8080 port가 이미 사용되고 있어 사용되고 있는 8080 port를 죽이고 다시 실행 시키면 되는 ! 간단한 문제이다 윈도우이기에 1)cmd 창을 여는데 관리자 권한으로 실행시켜 줘야 포트를 중단할 수 있다. 2) netstat -a -o 명령어를 입력하면 사용중인 포트들을 확인 할 수 있다. ctnl + F로 8080을 찾으면 쉽다. 이 리스트 중 마지막 번호가 PID 번호인데 이걸 알아야 포트를 중지시킬 수 있다. 3) taskkill /f /pid PID번호 를 입력하면 포트가 종료된다. PID 번호가 여기서는 23356이기에 ..

카테고리 없음 2024.01.17

CI/CD(1) - vpc 생성/설정

기본 VPC는 항상 public이기에 서브넷이 인터넷 게이트웨이에 연결되어 있음. -> 라우팅 테이블을 보면 모든 아웃바운드 트레픽에 대해 인터넷 게이트로 보내게 되어 있음. 서브넷은 퍼블릭 2개, 프라이빗 2개로 만들건데 프라이빗 서브넷은 rds에서 서브넷 그룹 만들 때 2개 요구하기 때문. elb -> elastic bean stalk은 CI/CD중에 쉬운편이라 추천. 장점은 로드 밸런스가 들어있어 관리가 편함 - VPC 생성 기본 설정으로 이름만 작성 후 VPC 생성 눌러주기 리소스 맵을 보면 방금 만든 vpc는 서브넷이 없다! 빈 껍데기와 같음 -서브넷 만들기 서브넷 생성에 들어가 아까 만든 vpc를 선택. 서브넷은 4개 만들어야 하기에 새 서브넷 추가 눌러주기 서브넷 이름은 구별 쉽게 지어줘야 ..

UMC 2024.01.16

JAVA 개념정리 (2)

*배열 int[[] arr = new int[10]; // 10이 배열의 크기로 이때 index는 0 ~ 9까지. 배열의 크기는 arr.length로 사용. (반복문에서 배열 사용 시 사용) 배열은 int[] s = {1,2,3}; 이런식으로 바로 초기화해서 사용 가능. *for - each루프 int[] list = {1, 2, 3}; for ( int a : list } { System.out.println(a); } *2차원 배열 int[][] list = new int[3][5]; //list[0][0] ~ list[2][4] *ArrayList _ 가볌 크기의 배열 자바의 전통적인 배열보다 편리. 자바 전통 배열은 크기 지정후 변경 불가한 단점이 있다. ArrayList>String> list ..

알고리즘 2024.01.02

JAVA 개념 정리 (1)

c언어랑 자바가 헷갈려서.. 헷갈리는 개념 정리해보려고 한다 *코드 기본 형태 public class Test { public static void main(String args[]) { } public int add(int a, int b) { } } * 콘솔에서 입력 Scanner sc = new Scanner(System.in); int x = sc.nextInt(); *출력 System.out.println("A - " + a + "입니다."); //문자열과 변수간 +로 연결. * 논리 연산자 && - AND 개념 || - OR 개념 ! - NOT 개념 *if-else문 if (num >= 10) { //조건문 안 코드가 한줄이라면 {}괄호 필요 없음 }else if (num > 20) { }el..

알고리즘 2024.01.02

웹서버&웹어플리케이션 개념 정리

✨UMC 10주차 과제 💡 웹 서버의 개념과 기능 웹서버는 클라이언트의 요청을 받아, HTML과 같은 정적인 콘텐츠를 전달해주는 역할을 한다. 요청에 따라 리소스를 클라이언트에 전달하고, 클라이언트에 콘텐츠 전달받아 처리하는 역할을 한다. 웹 어플리케이션 서버의 개념과 기능 웹 어플리케이션 서버, WAS라고도 하는데 웹 서버 + 웹 컨테이너 결합으로 이루어진 SW이다. 웹 서버를 포함하기에 웹 서버처럼 사용가능하고, DB에 연결되어 트랜잭션 처리나 다른 시스템 연동, 비즈니스 로직 처리등의 기능으 포함한다. 웹 서버와 웹 어플리케이션 서버의 차이점 WAS와 WS의 차이점은 동적인 컨텐츠 처리 수행 가능 여부이다. WAS는 정적인 요청만 처리할 수 있는 WS와 달리 동적인 요청 처리가 가능하고 DB 접근,..

UMC 2023.06.14