JWT 토큰에 대하여
면접 준비하면서 내가 JWT 토큰에 대해서 잘 모른다고 생각해서 내용 정리
JSON 웹토큰(JWT)은 온라인 네트워크에서 정보를 안전하게 통신할 때 사용하는 인터넷 표준 토큰
JWT가 제공하는 건 기밀성(confidentiality)이 아니라 무결성(integrity)입니다.
즉 "내용을 숨기는게" 아니라
"내용이 위변조되지 않았음을 증명"하는 것
면접 질문 중에 A고객사는 재고 조회 API만 허용하고 B고객사는 재고 조회 API, 출고 요청 API 등 이런식으로 고객사별로 서로 다른 API 권한을 주고 싶을 때 어떻게 하냐?는 질문을 받았는데...
나는 그만.. API를 버저닝하는 걸로 답해버렸다. JWT에 IP정보를 넣을 생각까지 했으면서 왜 권한은 JWT에 포함시킬 생각을 못 했을까..
결과적으론 IP 정보는 JWT에 넣으면 안 될 것 같다. 개발자들이 개발서버에서 테스트하려고 할 때 자주 바뀔 위험이 있는 IP를 JWT에 넣는 다면 VPN을 사용해서 고정 IP를 사용하면 되긴 하지만 그건 근본적인 해결책이 아님. 결국 IP정보를 제거해야함.
** JWT 토큰에 scope 항목에 read:inventory 를 추가해서 재고 조회 API만 허용하도록 할 수 있다.
회사에서 uuid를 이용한 access_token을 발급하는 방식으로 사용하면서 Open API로 API를 호출할 때 request param, request body에 꼭 항상 cstCd를 넘겨서 조회했는데 이건 잘못된 방식
이유 : 고객이 본인의 cstCd 이외의 다른 고객사 코드를 입력하게 될 경우 다른 고객사의 정보를 조회하거나 조작할 수 있음 -> 심각한 위험성 고객의 사업에 대한 민감한 정보 조회가능
그래서 JWT 토큰을 리턴해주면서 거기에 isa, isu, exp 이외에도 cstCd 정보를 포함시켜서 토큰을 생성합니다. 발급받은 토큰으로 고객사가 API를 호출할 때 JWT 토큰의 서명을 확인하면서 claims 정보의 cstCd정보를 확인해서 해당 cstCd 정보를 바탕으로 API 동작합니다.
'IT 개발 > 개념 정리' 카테고리의 다른 글
| JVM 구조와 자바 메모리 올라가는 과정 (0) | 2026.03.01 |
|---|---|
| 낙관적 락, 비관적 락, Redisson Lock (0) | 2026.01.14 |
| JAVA Stream API에 대한 정리 (0) | 2026.01.09 |
| DB 개념 및 면접 내용 정리 (0) | 2026.01.08 |
| JAVA 면접 질문 공부 (0) | 2026.01.08 |