JWT란?
JWT(JavaScript Web Token)는 인터넷에서 정보를 안전하게 전달하기 위한 토큰 기반의 오픈 표준입니다. 주로 웹 및 모바일 애플리케이션에서 인증과 권한 부여를 관리하는 데 사용됩니다. JWT는 JSON 형식으로 작성되어 있으며, 토큰 안에 필요한 정보를 포함시킵니다.
JWT는 세 가지 부분으로 구성됩니다:
헤더(Header):
JWT의 유형과 서명 알고리즘 등의 메타데이터를 포함합니다. 일반적으로 JSON 형식으로 작성되며, Base64로 인코딩됩니다.
페이로드(Payload):
JWT에 포함할 정보, 즉 클레임(Claim)이라고도 불리는 데이터를 포함합니다. 클레임은 토큰 발급자가 정의하며, 사용자 ID, 권한, 만료일 등과 같은 다양한 정보를 담을 수 있습니다. 마찬가지로 JSON 형식으로 작성되고, Base64로 인코딩됩니다.
서명(Signature):
서명은 헤더와 페이로드를 인코딩한 후, 비밀 키를 사용하여 생성됩니다. 서명은 토큰의 변조 여부를 확인하기 위해 사용되며, 서버 측에서 유효성 검사에 사용됩니다.
JWT의 장점은 다음과 같습니다:
- 정보 포함: JWT는 페이로드로 원하는 사용자 정보를 포함시킬 수 있어, 인증 및 권한 관리에 유용합니다.
- 자가 수용적(Self-contained): JWT는 자체적으로 모든 필요한 정보를 포함하고 있으므로, 별도의 세션 상태 저장소가 필요 없습니다.
- 확장 가능: 클레임을 사용하여 필요에 따라 사용자 정의 데이터를 추가할 수 있습니다.
- 분산 환경 지원: JWT는 클라이언트와 서버 간에 전달되므로, 다중 서버나 다중 도메인 환경에서도 사용할 수 있습니다.
JWT는 기본적으로 안전한 토큰이지만, 토큰을 안전하게 보호하고 검증하는 과정이 중요합니다. 토큰이 유출되지 않도록 암호화하고, 서명을 검증하여 변조 여부를 확인하는 것이 필요합니다.
반응형
'Server > Web & Server' 카테고리의 다른 글
서브도메인 간에 로그인 세션 안전하게 공유하는 방법 (0) | 2023.06.07 |
---|---|
서버리스(SERVERLESS)는 서버가 없는 것? (0) | 2021.08.07 |
IP 대역 분할 표 (0) | 2018.07.31 |
WAS와 Web-server(웹서버) (0) | 2018.07.04 |
REST API 란 (0) | 2018.07.04 |
리눅스에서 Nginx + Tomcat 서버 구축하기(3) (0) | 2017.06.13 |
리눅스에서 Nginx + Tomcat 서버 구축하기 (2) (0) | 2017.06.13 |
리눅스에서 Nginx + Tomcat 서버 구축하기 (1) (0) | 2017.06.13 |