JSON 웹 토큰(JWT) 생성 방법
JSON 페이로드와 선택적 시크릿을 입력하면 HMAC과 SHA-256을 사용하는 서명 토큰을 생성할 수 있습니다. 페이로드를 비워 두면 기본 페이로드가 사용됩니다.
JWT 생성 전에 확인할 내용
JWT Generator는 JSON 형식의 페이로드와 선택한 시크릿을 바탕으로 서명된 토큰을 만드는 데 사용할 수 있습니다. 사용자는 토큰에 넣을 JSON 텍스트를 직접 작성하거나, 페이로드 입력을 비워 두고 도구에 설정된 기본 페이로드를 사용할 수 있습니다. 따라서 간단한 형식 확인이 필요한 경우와 특정 사용자 정보나 역할을 담은 입력을 시험하는 경우에 같은 절차를 적용할 수 있습니다.
이 도구에서 기본 알고리즘 입력값으로 표시되는 이름은 HS256입니다. 이 이름은 토큰 헤더에 들어가며, 실제 서명 작업에는 HMAC과 SHA-256이 사용됩니다. 입력란에 보이는 알고리즘 이름과 서명 방식을 구분해 이해하면 결과를 읽을 때 혼동을 줄일 수 있습니다. 이 안내는 새 토큰을 생성하는 방법에 초점을 둡니다. 이미 가진 토큰의 내용을 확인하거나, 토큰을 검증하거나, 토큰을 디코딩하는 절차로 이해해서는 안 됩니다.
생성에 앞서 페이로드를 JSON 문법에 맞게 준비하세요. JSON 객체를 사용한다면 속성 이름과 문자열 값을 큰따옴표로 감싸고, 여는 중괄호와 닫는 중괄호가 서로 맞는지 살펴보는 편이 좋습니다. 숫자, 불리언, 배열처럼 JSON에서 허용되는 값도 문법에 맞게 작성해야 합니다. 단순히 텍스트를 입력하는 것과 유효한 JSON을 입력하는 것은 다르므로, 토큰에 넣으려는 구조를 먼저 정리한 뒤 입력하는 것이 안전합니다.
페이로드가 비어 있을 때는 입력 오류로 처리되는 대신 도구의 기본 페이로드가 사용됩니다. 반대로 직접 작성한 페이로드가 공백이 아닌 값으로 들어가면 도구는 그 텍스트를 JSON으로 해석하려고 합니다. 이 조건을 알면 빈 입력을 사용한 경우와 사용자 정의 입력을 사용한 경우의 결과가 달라질 수 있는 이유를 이해할 수 있습니다.
JWT 생성 절차
-
페이로드 입력란에 토큰에 포함할 JSON 텍스트를 작성합니다. 예를 들어 식별자를 문자열로 넣으려면 속성 이름과 값을 큰따옴표로 표시하고, 객체 전체를 중괄호로 감쌉니다. 여러 속성을 넣을 때는 속성 사이에 쉼표를 사용하되 마지막 속성 뒤에는 불필요한 쉼표를 남기지 않습니다. 입력하려는 값이 JSON에서 문자열인지 숫자인지도 구분하세요.
-
별도의 페이로드가 필요하지 않다면 입력란을 빈 상태로 둡니다. 공백이 아닌 임의의 문장을 입력하면 기본 페이로드가 선택되는 것이 아니라 JSON 해석 대상이 됩니다. 빈 입력으로 기본 동작을 확인하려는 경우에는 예시 문구나 설명을 남기지 말고 입력란을 비워 두세요.
-
시크릿 입력란은 필요한 값을 직접 작성할 수 있는 선택 항목으로 다룹니다. 다른 시크릿을 사용하려면 토큰을 생성하기 전에 그 값을 입력하세요. 시크릿을 비워 둔 경우에는 기본값인
my-secret이 사용됩니다. 따라서 입력하지 않은 상태에서 생성한 결과를 다른 입력으로 생성한 결과와 비교할 때에는 이 기본값의 사용 여부를 함께 기록해 두는 것이 좋습니다. -
알고리즘 입력값이 기본값인
HS256으로 설정되어 있는지 확인합니다.HS256은 결과 토큰의 헤더에 표시되는 알고리즘 값입니다. 이 도구의 서명 작업은 HMAC과 SHA-256으로 수행되므로, 화면에 표시되는 이름과 실제 서명 방식을 함께 확인해야 합니다. 임의의 다른 알고리즘 이름을 넣었다고 해서 서명 방식이 그 이름에 맞게 바뀐다고 해석하지 마세요. -
생성 동작을 실행합니다. 직접 페이로드를 입력했다면 실행 전 JSON의 괄호, 따옴표, 쉼표를 다시 살펴보세요. 잘못된 JSON은 성공한 토큰으로 이어지지 않으므로, 생성 결과가 성공으로 나오지 않을 때에는 먼저 페이로드 문법을 확인하는 순서가 적절합니다. 입력을 수정했다면 수정된 텍스트를 기준으로 다시 생성 동작을 실행하세요.
-
결과가 표시되면 값이 비어 있지 않은지 살펴보고, 마침표로 나뉜 부분의 개수를 확인합니다. 이 확인은 생성 결과의 기본 형태를 살펴보는 방법입니다. 페이로드를 바꾸면 결과 문자열도 달라질 수 있으므로, 특정 문자열 자체를 미리 정해 두기보다 사용한 입력과 표시된 결과의 구조를 함께 비교하세요.
결과 해석과 사용 범위
성공한 생성 결과는 비어 있지 않은 토큰입니다. 이 토큰에는 마침표(.)로 구분되는 세 부분이 들어 있습니다. 따라서 결과를 처음 확인할 때는 문자열이 표시되었는지, 마침표를 기준으로 세 부분으로 나뉘는지 살펴볼 수 있습니다. 이 형태 확인은 결과가 토큰 구조를 갖추었는지 보는 데 도움이 되지만, 그 자체로 입력 내용의 의미가 올바르다는 뜻은 아닙니다.
토큰의 첫 부분에는 알고리즘 입력값이 헤더 정보로 표시될 수 있습니다. 기본 알고리즘 이름은 HS256이며, 서명 작업은 HMAC과 SHA-256을 사용합니다. 이 두 정보를 섞어 표현하지 말고, HS256은 헤더에 표시되는 값, HMAC과 SHA-256은 서명에 사용되는 방식으로 구분해 기록하세요. 결과를 다른 문서나 절차에서 사용할 때에도 입력한 페이로드와 선택한 시크릿을 함께 확인해야 결과 차이를 설명하기 쉽습니다.
페이로드를 비워 두었다면 도구가 제공하는 기본 페이로드가 적용됩니다. 직접 JSON을 작성했다면 결과가 성공했을 때 그 입력이 의도한 객체 구조였는지 별도로 확인하세요. 토큰이 세 부분으로 나뉜다는 사실만으로 페이로드의 각 값이 원하는 의미로 들어갔다고 판단할 수는 없습니다. 이 안내에서 확인할 수 있는 것은 생성 결과의 형태와 사용된 입력 조건이며, 기존 토큰의 내용이나 상태를 판정하는 기능은 아닙니다.
생성에 실패했다면 직접 입력한 페이로드가 JSON으로 해석될 수 있는지부터 점검하세요. 속성 이름에 큰따옴표가 빠졌거나, 문자열 안의 따옴표가 닫히지 않았거나, 중괄호가 맞지 않으면 성공한 토큰이 반환되지 않을 수 있습니다. 페이로드가 올바른 JSON인데도 원하는 결과와 다르게 보인다면 빈 입력으로 기본 페이로드를 사용한 것은 아닌지, 시크릿을 비워 기본값이 적용된 것은 아닌지, 알고리즘 입력값을 어떻게 설정했는지 순서대로 다시 기록해 보세요.
이 도구는 토큰 생성이라는 범위에서 사용해야 합니다. 생성된 결과가 유효한지 또는 특정 서비스에서 받아들여지는지를 이 형식만으로 단정하지 마세요. 또한 기존 토큰을 넣어 검증하거나 디코딩하는 도구로 사용한다고 설명할 수 없습니다. 결과를 사용할 때에는 토큰을 요구하는 대상의 별도 조건과 입력 데이터의 적절성을 따로 확인해야 합니다.
사용 예시
사용자 식별자와 역할을 담은 JSON 페이로드로 테스트용 JWT 형태의 결과를 확인하려고 합니다.
페이로드에 { "sub": "user-17", "role": "reader" }를 입력하고 시크릿에 demo-key를 작성한 뒤 생성 동작을 실행합니다. 알고리즘 입력값은 HS256으로 둡니다.
성공하면 비어 있지 않은 토큰이 반환되며, 마침표로 구분된 세 부분으로 나뉩니다. 구체적인 토큰 문자열은 입력과 실행 결과에 따라 달라집니다.
제한 사항
- 이 도구는 JSON 페이로드와 시크릿을 사용해 토큰을 생성하는 기능에 초점을 둡니다. 기존 토큰의 검증, 디코딩 또는 내용 검사를 위한 도구로 설명해서는 안 됩니다.
자주 발생하는 오류
- 페이로드의 속성 이름에 큰따옴표가 없거나 중괄호와 문자열 따옴표가 맞지 않으면 JSON 해석에 실패해 성공한 토큰이 나오지 않을 수 있습니다. 입력을 JSON 객체 형식으로 다시 정리하고 괄호, 따옴표, 쉼표를 확인한 뒤 생성 동작을 다시 실행하세요.
자주 묻는 질문
페이로드 없이도 JWT를 생성할 수 있나요?
페이로드 입력을 빈 상태로 두면 도구의 기본 페이로드가 사용됩니다. 특정 내용을 넣으려면 공백이 아닌 올바른 JSON 텍스트를 입력하세요.
시크릿을 입력하지 않으면 어떻게 되나요?
시크릿을 입력하지 않은 경우에는 기본값인 my-secret이 사용됩니다. 다른 값을 사용하려면 생성 전에 시크릿 입력란에 직접 작성하세요.
생성된 결과가 JWT 형식인지 어떻게 확인하나요?
성공 결과는 비어 있지 않고 마침표로 구분된 세 부분을 포함합니다. 다만 페이로드 JSON이 올바르지 않으면 성공한 토큰이 반환되지 않으므로, 먼저 입력 문법을 확인해야 합니다.