-
JWT(JSON Web Token)?CS 2024. 5. 11. 11:51
오늘날, 웹 애플리케이션은 사용자 정보 보호와 인증 관리가 필수적인 요소가 되었다.
과거엔 세션 기반 인증 방식을 많이 사용했지만, 분산 환경에서의 확장성과 보안성 문제로 인해 새로운 솔루션이 필요하다.
JWT는 이러한 문제를 해결하기 위해 등장한 인증 및 인가 표준이다.
JWT는 사용자 정보를 안전하게 포함하고 암호화하여 클라이언트와 서버 간의 통신을 보호한다.
또한, 분산 환경에서도 효율적으로 작동하여 다양한 웹 애플리케이션에서 널리 사용되고 있다.
JWT(JSON Web Token)
JWT는 웹 애플리케이션에서 인증 및 인가를 위한 표준 토큰이다.
과거 세션 기반 인증은 스케일링이 어렵고 서버 부담이 크다는 단점이 있었다.
하지만 JWT는 분산 환경에서도 안전하게 사용할 수 있는 솔루션을 제공한다.
JWT의 구조
구조 설명 헤더(header) 토큰의 종류, 암호화 알고리즘 등을 포함 페이로드(payload) 사용자 정보 포함 서명(signature) 헤더와 페이로드를 암호화하여 토큰의 무결성 보장 JWT의 동작원리
- 사용자가 ID와 Password를 입력하여 로그인 요청을 보낸다.
- 서버는 회원DB에 들어가 있는 사용자인지를 확인한다.
- 회원DB에 들어가 있는 사용자인지 확인이 되면, 서버는 로그인 요청을 확인 후, secret key를 통해 토큰을 발급한다.
- 토큰을 이제 클라이언트에게 전달해 준다.
- 서비스 요청과 권한을 확인하기 위해 헤더에 데이터(JWT) 요청을 한다.
- 데이터를 확인 후, JWT에서 사용자 정보를 확인한다.
- 클라이언트 요청에 대한 응답과 요청한 데이터를 전달한다.
위 동작 원리처럼, 토큰 기반 인증방식은 사용자의 인증을 거친 후, 사용자 인증이 완료되면 토큰을 발급하는 방식이다.
클라이언트 측에서는 전달받은 토큰을 저장해두고 서버에 요청을 할 때마다 해당 토큰을 서버에 함께 전달한다.
그 이후 서버는 토큰을 검증하고 응답하는 방식으로 작동하는 것이다.
JWT의 장점
- 분산 환경 적합: 서버 부담 없이 분산 환경에서 사용자 인증 및 인가를 수행할 수 있다.
- 무상태: 세션 관리가 필요 없어 서버 부담을 줄이고 스케일링을 용이하게 한다.
- 보안 강화: HTTPS 및 암호화 알고리즘을 사용하여 토큰을 보호한다.
- 다양한 프레임워크 지원: 다양한 프로그래밍 언어와 프레임워크에서 지원된다.
JWT 활용 예시
- 웹 API 인증: 웹 API에 대한 사용자 인증 및 인가를 위한 표준 방법이다.
- 모바일 앱 인증: 모바일 앱에서 사용자 인증 및 권한 관리를 수행하는 데 사용된다.
- SSO(Single Sign-On): 여러 애플리케이션에서 동일한 사용자 인증을 사용하는 데 사용된다.
JWT 주의 사항
- 토큰 유출: 토큰이 유출되면 공격자가 사용자로 가장하여 악용할 수 있다.
- 토큰 만료: 토큰의 만료 시간을 관리해야 하며, 만료된 토큰은 사용할 수 없도록 해야 한다.
- 토큰 갱신: 토큰이 만료되기 전에 갱신 메커니즘을 구축해야 한다.
'CS' 카테고리의 다른 글
Docker? (0) 2024.05.30 인증과 인가 (0) 2024.05.12 OAuth란? (0) 2024.05.11 node.js 환경 vs 브라우저 환경 (1) 2024.01.10 Vue vs React (프레임워크 vs 라이브러리) (0) 2024.01.09