[Problem]
JWT (JSON Web Token)을 header로 받는 이유에 대해서 생각해보자...
[Solution]
기본적으로 JWT(JSON Web Token)은 웹 애플리케이션에서 사용자 인증과 권한 부여를 위해 널리 사용되는 토큰 기반 인증 방식이다. JWT는 정보를 안전하게 전송하기 위해 서명된 토큰을 사용하며, 주로 HTTP 요청의 헤더에 포함하여 전송된다. 물론 body같은 정보를 담을 수 있는 부분으로 넘겨도 괜찮다. 그러나 헤더에 포함해서 정보를 보내는 이유는 크게 3가지로 볼 수 있다.
- 보안: JWT는 서명되어 있기 때문에 토큰이 변조되었는지 확인할 수 있다. 서명을 확인하면 토큰이 유효하고 신뢰할 수 있는지 확인할 수 있다. 헤더에 포함된 서명은 토큰의 무결성을 보호하는 데 도움이 된다.
- 표준화: JWT는 일반적으로 "Authorization"헤더에 포함된다. 이는 JWT를 사용하는 시스템간에 일관성을 제공한다. 대부분의 웹 프레임워크와 라이브러리는 토큰을 헤더에 위치시키는 것을 기본으로 지원하므로, 일반적인 방식을 따르는 것이 편리하다.
- 권한 부여: JWT에는 사용자의 권한 정보와 같은 추가적인 클레임(Claim) 정보를 포함할 수 있다. 이러한 정보를 헤더에 포함시키면 서버에서 토큰을 검증하고, 클라이언트에게 해당 사용자의 권한과 관련된 작업을 수행할 수 있는지 여부를 확인할 수 있다.
헤더 이외의 부분, 페이로드(Payload)는 토큰의 실제 데이터를 담고 있으며, 클라이언트와 서버간에 전송될 수 있다. 하지만 페이로드를 헤더 대신에 바로 요청의 본문에 넣는 것은 일반적으로 권장되지 않는다. 토큰이 헤더에 포함되면 서버는 요청을 처리하기 전에 토큰을 빠르게 확인할 수 있다. 또한, 헤더에 포함된 토큰은 캐시와 같은 중개자 시스템에서 쉽게 접근할 수 있다.
[Conclusion]
JWT를 헤더에 포함하는 것은 보안, 표준화, 권한 부여를 위해서다. 헤더에 포함된 토큰은 빠르고 안전한 인증 및 권한 검증을 가능하게 해주며, 토큰 기반 인증을 구현하는 일반적인 방식이다. 따라서 이런 부분을 고려했을 시에 되도록 JWT 토큰은 헤더에 담아서 이용하는 것이 좋아보인다.
'Self Dev. > TIL' 카테고리의 다른 글
2023-07-24 TIL - S3 이용한 이미지 저장 (0) | 2023.07.24 |
---|---|
2023.05.30 TIL - 토큰에서 사용되는 Bearer는 무엇인가? (0) | 2023.05.30 |
2023.05.16 TIL - express에 multer 모듈을 이용해 image 업로드... (0) | 2023.05.16 |
2023.05.11 TIL - Sequelize (timestamp) (0) | 2023.05.11 |
2023.05.07 TIL - MySQL 데이터베이스 (Sequelize를 이용하여 Drop하기) (0) | 2023.05.07 |