Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
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
Tags more
Archives
Today
Total
관리 메뉴

나만의 개발 로그 | 고민 로그

REST API에서 Path Variable과 Query Parameter의 차이 + JWT 기반 인증 전략 (Access Token / Refresh Token) 본문

웹 개발

REST API에서 Path Variable과 Query Parameter의 차이 + JWT 기반 인증 전략 (Access Token / Refresh Token)

ultramancode 2023. 1. 12. 01:24

 

✅ Path Variable vs Query Parameter

1. Path Variable

  • 고유 리소스를 식별할 때 사용
  • API 구조상 리소스에 접근하는 명확한 경로로 사용된다.
✅ 예시 
GET /users/42 → ID가 42번인 유저 조회 
GET /posts/123 → ID가 123번인 게시글 조회
📌 이 값은 보통 DB의 PK(ID)나 고유 식별자(UUID) 등과 1:1 대응된다.

 


2. Query Parameter

  • 정렬, 필터링, 페이징 등 옵션을 전달할 때 사용
  • 리소스를 조작하거나 세부 조건을 붙일 때 적합하다.
✅ 예시 
GET /users?age=30&gender=male → 30세 남성 유저 필터링 
GET /posts?page=2&size=10 → 게시글 목록 페이징 처리 
GET /logs?level=ERROR&from=2024-01-01
📌 Query Parameter는 유연성을 위해 선택적이고, 동일 리소스 범위 내에서 세부 조건만 바뀌는 경우에 적합하다.

✨ 정리

항목 Path Variable Query Parameter
용도 리소스 식별 정렬/검색/필터링/페이징 등
필수 여부 대부분 필수 선택적
예시 /users/1 /users?role=admin

 


🔐 JWT 기반 인증 구조 (Access Token / Refresh Token)

현대 웹/모바일 서비스에서 인증(Authentication)은 성능과 보안 모두를 만족시켜야 한다.
이때 많이 사용되는 구조가 Access Token + Refresh Token 방식이다.


✅ Access Token

  • 로그인 시 발급되는 짧은 유효기간의 토큰
  • API 요청 시 헤더에 담아 사용
    → Authorization: Bearer {accessToken}
  • JWT(Json Web Token) 형식인 경우, 자체적으로 유저 정보와 서명이 포함되어 있어
    → 서버에서 DB 조회 없이도 토큰 자체로 검증이 가능하다.

📌 장점: 빠른 처리, 무상태(stateless) 인증
📌 단점: 탈취 시 위험, 중간 무효화 어려움


✅ Refresh Token

  • Access Token이 만료되었을 때 다시 발급받기 위한 토큰
  • 서버 또는 Redis 등에서 관리되어야 함 (탈취 방지 목적)

⛔ 문제점

만약 Refresh Token 없이 Access Token만 사용한다면?
→ 사용자는 1시간 뒤에 갑자기 로그인이 풀리게 되고, 앱 UX가 최악이 된다.


🔁 Refresh Token Rotation 전략

보안을 강화하려면 Refresh Token도 매번 재발급하는 구조를 사용하는 것이 좋다.

[기본 흐름]
1. 로그인 → Access Token + Refresh Token 발급 
2. Access Token 만료 → Refresh Token으로 재발급 요청 
3. 이때 새로운 Refresh Token도 함께 재발급 (→ 기존 토큰은 무효화)

📌 자주 사용하는 앱이라면 유저가 로그인을 거의 인식하지 못하고 지속적으로 인증 상태를 유지할 수 있다.


📦 유효기간 추천

토큰 유형 예시 유효기간 비고
Access Token 15분 ~ 1시간 짧게 설정 (탈취 대비)
Refresh Token 1주 ~ 2주 길게 설정 (지속 로그인)

✅ 실전 팁: 토큰 보안 관련 추가 고려사항

  • ✅ Refresh Token은 반드시 DB or Redis에서 관리하고, 탈취 시 즉시 무효화 가능해야 함
  • ✅ HTTPS는 필수. (Access/Refresh 모두 외부로 유출되지 않도록 클라이언트와 서버 간 데이터를 암호화하여 전송)
  • ✅ HttpOnly, Secure 쿠키 옵션을 활용해 보안, XSS 방지 강화
    - Secure 쿠키 : HTTPS로만 쿠키 전송
    - HttpOnly 쿠키 : 자바스크립트에서 쿠키 접근 불가(document.cookie) -> XSS 공격 방지
  • ✅ 로그아웃할 경우, Refresh Token도 반드시 삭제 처리

🧠 마무리 정리

  • 리소스 식별 → Path Variable
  • 조건/옵션 전달 → Query Parameter
  • 인증 처리 → JWT Access Token + Refresh Token
  • UX 개선 + 보안 강화 → Refresh Token Rotation 전략 추천
Comments