JWT 디코더

JSON 웹 토큰은 뜻 모를 문자열처럼 보이지만 대부분은 읽을 수 있습니다. 세 부분 중 둘은 base64로 감싼 JSON일 뿐입니다. 이 디코더는 그것을 열어 토큰이 누구를 위한 것인지, 무엇을 주장하는지, 정확히 언제 만료되는지 보여 줍니다. 대개는 요청이 왜 거절되는지 알아내는 중에 보게 되는 것들입니다. 비밀 값이 있다면 HMAC 서명까지 확인할 수 있어서, 그 토큰이 정말 생각하는 그 시스템이 발급한 것인지 알 수 있습니다. 토큰은 살아 있는 자격 증명이라 페이지 안에서 도는 것이 중요합니다. 토큰도 비밀 값도 어디로 전송되지 않습니다.

JWT를 열어 보는 방법

  1. 토큰을 붙여 넣습니다. 점으로 나뉜 세 부분 전부를, 헤더나 쿠키에 보이는 그대로 넣으면 됩니다.
  2. 헤더와 내용을 나란히 읽습니다. 헤더에는 서명 알고리즘이, 내용에는 클레임이 들어 있습니다.
  3. 시각 항목을 봅니다. exp, iat, nbf가 실제 시각으로 나오고 만료된 토큰에는 표시가 붙습니다.
  4. 서명을 확인하려면 서명에 쓰인 비밀 값을 붙여 넣고 확인을 누릅니다. HS256, HS384, HS512에서 동작합니다.

JSON 웹 토큰에 대해 자주 묻는 것

진짜 토큰을 여기에 붙여 넣어도 되나요?

다른 대부분의 곳보다는 안전합니다. 해석이 브라우저에서 이뤄지고 네트워크로 아무것도 보내지 않기 때문입니다. 그래도 토큰은 자격 증명이라는 점을 잊지 마세요. 화면이나 클립보드를 보는 사람은 그것을 가진 셈이고, 살아 있는 세션 토큰이라면 만료될 때까지 계속 유효합니다.

내용이 암호화되어 있나요?

아닙니다. 이 점에 놀라는 분이 많습니다. 헤더와 내용은 base64로 감싸 두었을 뿐이라, 토큰을 가진 사람은 열쇠 없이도 읽을 수 있습니다. 서명은 내용이 바뀌는 것을 막을 뿐 읽히는 것을 막지 않습니다. 비밀로 둘 것은 절대 JWT 내용에 넣지 마세요.

왜 HS256 계열만 확인할 수 있나요?

그쪽은 공유하는 비밀 값으로 서명하기 때문에 여기에 붙여 넣을 수 있습니다. RS256, ES256 같은 것들은 개인키로 서명하고 짝이 되는 공개키로 확인하는데, 그 공개키는 대개 발급처의 JWKS 주소에서 받아 와야 합니다. 그러면 요청을 보내야 하는데 이 도구는 그러지 않습니다.

서명이 맞지 않습니다. 무엇이 잘못됐나요?

대개는 서명에 쓴 비밀 값이 아니거나, 붙여 넣을 때 공백이나 줄바꿈이 딸려 들어간 경우입니다. 헤더가 주장하는 것과 다른 알고리즘으로 서명됐거나, 누가 손을 댔다는 뜻일 수도 있습니다. 후자야말로 서명 확인이 존재하는 이유입니다.

exp, iat, nbf는 무슨 뜻인가요?

모두 초 단위 유닉스 시각으로 적는 표준 시각 클레임입니다. exp는 토큰이 더는 유효하지 않게 되는 때, iat는 발급된 때, nbf는 이 토큰을 쓸 수 있는 가장 이른 때입니다. 이 페이지는 셋 모두를 보통의 날짜로 보여 주고 exp가 지난 토큰에는 표시를 붙입니다.

Other tools

Languages