테스트 주도 개발은 테스트 이후 실제 코드를 개발하고, refactoring하는 과정을 의미한다. 기존 방식은 개발 이후에 테스트를 진행하였기 때문에, 그와 차별화되는 방식이라는 의미에서 테스트 "주도"라는 용어가 등장한 것 같다.
Json Web Token은 정보를 JSON 개체로 안전하게 전송하기 위해 만들어진 간결한 개방형 표준이다.
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에서 사용하기 좋은 이점도 있다.