21.11.12 TIL37

서태욱·2021년 11월 12일
0

🔎 오늘 배운 것

TDD(Test Driven Development)

테스트 주도 개발은 테스트 이후 실제 코드를 개발하고, refactoring하는 과정을 의미한다. 기존 방식은 개발 이후에 테스트를 진행하였기 때문에, 그와 차별화되는 방식이라는 의미에서 테스트 "주도"라는 용어가 등장한 것 같다.

JWT

Json Web Token은 정보를 JSON 개체로 안전하게 전송하기 위해 만들어진 간결한 개방형 표준이다.

사용시기

  • 권한 부여: 유저가 로그인할 경우 JWT는 토큰을 발급해 웹 서비스 및 리소스에 접근할 수 있도록 해준다.
  • 정보 교환: JWT는 정보를 안전하게 전송하는 방법이기도 하다. 공개/개인 키 쌍을 이용하여 발신자가 누구인지 서명을 통해 확인이 가능하다. 또한 header와 payload를 통해 서명이 계산되므로 컨텐츠가 변조되었는지도 확인할 수 있다.

구조

JWT는 점으로 파트가 나뉘며 세 부분으로 구성되어 있다.
헤더(header) . 페이로드(payload) . 서명(signature)

헤더는 타입과 알고리즘 두가지로 이루어져 있다.
{
"alg": "HS256",
"typ": "JWT"
}

페이로드는 등록된 클레임 / 공개 클레임 / 비공개 클레임 세 부분으로 나뉜다.
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
이렇게 작성된 페이로드는 Base64Url로 인코딩 되어 JWT의 두번째 파트에 들어간다.

서명은 인코딩된 헤더, 인코딩된 페이로드, 암호, 헤더에 지정된 알고리즘을 가져와서 이루어진다. 예컨대 HMAC SHA256 알고리즘을 사용하는 경우는 다음과 같다.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)

사용하는 이유

JSON은 XML에 비해 더 간결하고 가볍다. 따라서 보안을 위해 사용되는 방식에서도 JSON을 이용한 JWT가 XML을 이용한 SAML보다 더 간결하다. 또한 JWT는 HTML 및 HTTP에서 사용하기 좋은 이점도 있다.

✔️ 출처

profile
re:START

0개의 댓글