2022년 12월 31일 토요일

JWT(Json Web Token)는 무엇인가요?

지인한테 JWT에 대한 웹토큰방식? 에 대해 들어 궁금하여 간략하게 특징정리와 나중에 시간이 되면 기존에 알고 있었던 엑세스 토큰(OAuth 2.0) 방식과의 차이점을 비교해보는 내용도 정리해보려고 합니다.



JWT의 특징

  • Json 포맷을 사용한 Claim기반의 웹 토큰
  • 사용자 인증을 위한 오픈스텐다드(RFC 7519)
  • 토큰 자체를 Self-Contained 방식으로 안전하게 전달
  • 사용자 인증에 자주 사용
  • 사용자 인증에 필요한 정보를 토큰 자체에 담고 있습니다(서버에 토큰정보를 저장할 필요없음)
  • 일반토큰 기반과 다르게 별도의 인증저장소나 서버, 데이터베이스에 의존하지 않는다고 합니다
  • JWT는 점으로 구분된 3개의 base64인코딩 문자열로 구성(header,payload,signature)
  • 헤더는 암호화 알고리즘(SHA256,RSA 등),토큰등에 대한 정보
  • 페이로드는 전달하려는 유저의정보(클레임),토큰에 대한 발급,만료일 등
  • 서명은 Secret key로 암호화 후 토큰을 변조하기 어렵게 합니다(핵심적인) 
  • C,JAVA,Python 등 여러 프로그래밍 언어에 지원
  • 기존 세션 토큰의 분산화된 세션관리 문제 에 대한 보완
  • 쿠키사용으로 인한 보안 취약점 개선
  • 토큰이 노출되면 보안적으로 취약해질수 있습니다(로컬스토리지 저장 주의)
  • 하나의 키에만 의존(키관리 중요)

*클레임이란? 사용자의 아이디나 기타 데이터들

*Self-contained란? 토큰 자체에 사용자의 권한,서비스 정보를 포함하는것



OAuth 2.0

표준화된 인증 프로토콜이며 대부분 인증서비스와 호환되어 트위터나 페이스북 같은 유명앱에서 사용되고 있다고 합니다.


JWT와의 차이점은 

OAuth Vs JWT - Detailed Comparison 참고


  • OAuth는 세션관리,웹,API,앱 등에 사용되고 JWT는 주로 API와 서버간 인증에 사용되는걸로 보입니다
  • OAuth는 인증프로토콜을 JWT는 토큰형식을 정의한다고 합니다
  • OAuth보다는 JWT가 배우기 쉽고 단순하다고 합니다
  • 클라이언트,서버 측 스토리지를 모두 사용하는 OAuth와 다르게 JWT는 클라이언트 스토리지만 사용해야한다고 합니다
  • 유연성이 뛰어난 OAuth와 다르게 JWT는 사용과 범위가 한정되어있다고 합니다


SAP PO에서 JWT를 사용할수 있을까?

Fetch Oauth Token in REST is not Out of The Box 참고


PO에 Add on할수 있는 서드파티 KaTe RESTFul 어댑터 등을 사용하거나 PO 7.5 SP13에서는 어댑터 자체에서 토큰을 가져오는 즉시 사용하는 기능이 있다고 하여 REST Receiver Adapter > General > OAuth > Authorize with OAuth를 확인해보면 OAuth토큰 기능이며 JWT토큰기능은 지원을 안하여 UDF 등의 방법으로 외부라이브러리를 사용하여 개발이 필요한걸로 보입니다.


댓글 없음:

댓글 쓰기