-
[CS/Programming] JWT(JSON Web Token) / OAuthCS/Programming 2025. 3. 21. 20:29
• JWT
- 토큰 인증 방식에서 쓰이는 것이라고 볼 수 있습니다. 다른 사용으로는 데이터를 공유하는데도 사용할 수 있지만 일반적으론 토큰 인증 방식에서 사용됩니다.
- JWT는 헤더, 페이로드, 시그니쳐로 구분됩니다. 헤더는 토큰의 타입, 암호화 알고리즘을 담고 있고, 페이로드는 토큰의 정보를 담는 부분이며, 시그니쳐는 토큰의 정보가 신뢰할 수 있는 것인지 판단할 수 있도록 합니다.
- JWT는 세션 기반 인증과 주로 대비됩니다. 세션 기반 인증은 서버에서 세션 정보를 관리해야 하는 비용이 들게 됩니다. 또한 분산 환경에서도 관리하기 어렵습니다. 하지만 JWT는 그 자체로 정보를 가지고 있기 때문에 세션의 단점을 보완할 수 있습니다.
• 로그인 인증시 JWT 사용
- 만약 유효기간이 짧은 Token을 발급하게되면 사용자 입장에서 자주 로그인을 해야하기 때문에 번거롭고 반대로 유효기간이 긴 Token을 발급하게되면 제 3자에게 토큰을 탈취당할 경우 보안에 취약하다는 약점이 있습니다.
- 그 점들을 보완하기 위해 Refresh Token 을 사용하게 되었습니다. Refresh Token은 Access Token과 똑같은 JWT입니다.
- Access Token의 유효기간이 만료되었을 때, Refresh Token이 새로 발급해주는 열쇠가 됩니다.
- 예를 들어, Refresh Token의 유효기간은 1주, Access Token의 유효기간은 1시간이라고 한다면, 사용자는 Access Token으로 1시간동안 API요청을 하다가 시간이 만료되면 Refresh Token을 이용하여 새롭게 발급해줍니다.
- 이 방법또한 Access Token이 탈취당한다해도 정보가 유출이 되는걸 막을 수 없지만, 더 짧은 유효기간때문에 탈취되는 가능성이 적다는 점을 이용한 것입니다.
- Refresh Token또한 유효기간이 만료됐다면, 사용자는 새로 로그인해야 합니다. Refresh Token도 탈취 될 가능성이 있기 때문에 적절한 유효기간 설정이 필요합니다.
Access Token + Refresh Token 인증 과정
• OAuth
- OAuth는 제 3자 인증 방식입니다. 기본적으로 사용자는 서버를 신뢰할 수 없기 때문에 민감정보를 작성하는 것을 꺼립니다.
- 서버측에서도 마찬가지입니다. 사용자의 민감정보를 관리하는 것은 리소스가 필요합니다.
- 그래서 OAuth를 사용해서 신뢰할 수 있는 서버에게 정보를 맡겨놓고 접근할 수 있는 권한을 주는 것이라고 이해하면 됩니다.
- 그러면 사용자 측에서는 민감정보를 굳이 입력하지 않고도 서비스를 이용할 수 있고, 서버측에서도 민감정보를 굳이 관리하지 않아도 되기 때문에 이점이라고 볼 수 있습니다.
* 위 글은 아래 문서를 참고해 작성했습니다.
https://github.com/ksundong/backend-interview-question
GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질
백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, 인터넷 참고한 질문(CC BY-NC) - ksundong/backend-interview-question
github.com
https://github.com/gyoogle/tech-interview-for-developer?tab=readme-ov-file
GitHub - gyoogle/tech-interview-for-developer: 👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖
👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.
github.com
'CS > Programming' 카테고리의 다른 글
[CS/Programming] RESTful API / RESTful하게 API를 디자인 한다는 것 (1) 2025.03.14