개발 환경에서 JWT 토큰 생성하기

  • 7 minutes to read

개발 중 API 인증이 필요한 경우, 아직 로그인 기능이 완성되지 않았더라도 테스트용 JWT 토큰을 발급하여 손쉽게 인증 과정을 검증할 수 있습니다.
이 강좌에서는 dotnet user-jwts create 명령어를 사용하여 개발 환경에서 JWT 토큰을 생성하고, 이를 활용하여 API 테스트를 진행하는 방법을 단계별로 안내합니다.

dotnet user-jwts 명령으로 개발용 JWT 토큰 발급하기

dotnet user-jwts create 명령

JWT 인증 방식을 사용하려면 반드시 토큰 발급 과정이 필요합니다. 현재 프로젝트에 회원가입, 로그인, 로그아웃과 같은 사용자 인증 기능이 아직 구현되지 않은 경우, 개발 중에는 테스트 용도로 직접 인증 토큰을 생성하여 사용할 수 있습니다.

이럴 때 유용하게 활용할 수 있는 명령이 바로 dotnet user-jwts create 입니다.
Visual Studio Developer PowerShell 또는 프로젝트 터미널에서 해당 명령을 실행하면, 간편하게 개발용 JWT 토큰을 발급할 수 있습니다.

개발자용 터미널 열기

프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭하고 '터미널에서 열기' 메뉴를 선택하면, 개발자용 터미널이 실행됩니다.

터미널에서 열기

JWT 토큰 생성

터미널이 열리면, 다음 명령어를 입력하여 JWT 토큰을 생성합니다.

dotnet user-jwts create

user-jwts 명령 실행

명령을 실행하면 JWT 토큰이 출력되며, 복사 아이콘을 클릭하여 클립보드에 복사할 수 있습니다.
이렇게 복사한 토큰은 API 테스트 시 Authorization 헤더에 넣어 사용하게 됩니다.

appsettings.Development.json 파일 자동 설정

dotnet user-jwts create 명령을 실행하면, 개발용 설정 파일인 appsettings.Development.json 에 JWT 인증을 위한 설정이 자동으로 추가됩니다.
이 설정은 프로젝트가 실행될 때 JWT 토큰을 검증하는 데 사용됩니다.

다음은 생성된 설정 예시입니다. (포트 번호는 개발자 환경에 따라 다를 수 있습니다.)

"Authentication": {
    "Schemes": {
        "Bearer": {
            "ValidAudiences": [
                "http://localhost:37345",
                "https://localhost:44323",
                "http://localhost:5213",
                "https://localhost:7071"
            ],
            "ValidIssuer": "dotnet-user-jwts"
        }
    }
}

솔루션 탐색기에서 appsettings.Development.json 파일을 열어 보면, 위와 같은 구성이 추가되어 있음을 확인할 수 있습니다.

이렇게 개발용 JWT 토큰과 설정을 활용하면, 본격적으로 사용자 인증 기능을 구현하기 전에 토큰 기반 인증을 미리 테스트하고 준비할 수 있습니다.

코드: appsettings.Development.json

{
    "Logging": {
        "LogLevel": {
            "Default": "Information",
            "Microsoft.AspNetCore": "Warning"
        }
    },
    "Authentication": {
        "Schemes": {
            "Bearer": {
                "ValidAudiences": [
                    "http://localhost:37345",
                    "http://localhost:5213",
                    "https://localhost:7071",
                    "http://localhost:5213"
                ],
                "ValidIssuer": "dotnet-user-jwts"
            }
        }
    }
}

생성된 JWT 토큰 검증하기

발급받은 JWT 토큰이 정상적으로 생성되었는지 확인하려면 jwt.io 웹사이트를 활용할 수 있습니다.
jwt.io 는 JWT 토큰의 헤더(Header), 페이로드(Payload), 서명(Signature) 정보를 시각적으로 확인하고 검증할 수 있는 유용한 도구입니다.

1. jwt.io 사이트 접속

웹 브라우저에서 jwt.io 사이트에 접속합니다.
홈 화면에서 바로 JWT 토큰을 입력할 수 있는 영역이 나타납니다.

2. JWT 토큰 붙여넣기

터미널에서 생성한 JWT 토큰을 복사한 후, jwt.io 사이트의 Encoded 입력란에 붙여넣습니다.

토큰을 붙여넣으면 오른쪽 Decoded 영역에서 자동으로 토큰이 디코딩되어 헤더와 페이로드 정보를 확인할 수 있습니다.

3. 토큰 정보 확인

디코딩된 토큰에서 다음 항목들을 확인합니다.

  • Header

    • alg: 사용할 암호화 알고리즘 (예: HS256)
    • typ: 토큰 타입 (JWT)
  • Payload

    • iss: 토큰 발급자 (예: dotnet-user-jwts)
    • aud: 토큰 수신자 (예: http://localhost:포트번호)
    • exp: 만료 시간 (Unix timestamp)
  • Signature

    • JWT 의 유효성을 검증하는 데 사용되는 서명 부분입니다.

특히, Payload 의 iss(Issuer) 가 dotnet-user-jwts 인지 확인하면, 개발용으로 발급된 토큰임을 알 수 있습니다.

4. Signature 유효성 검증 (Signing Key 사용)

jwt.io 에서는 비밀 키(Secret)를 입력하여 JWT 토큰의 Signature 유효성을 검증할 수 있습니다.
dotnet user-jwts create 명령으로 생성된 토큰의 Signing Key 는 다음 명령어를 통해 확인할 수 있습니다.

dotnet user-jwts key

위 명령을 실행하면, 현재 프로젝트에서 사용 중인 Signing Key 가 출력됩니다.

예시 출력:

Your JWT signing key is:
abc123def456ghi789jkl012mno345pqrs678tuv

이 Signing Key 값을 복사하여 jwt.io 의 Verify Signature 영역에 붙여넣습니다.

Signing Key 가 올바르게 입력되면, jwt.io 에서 "Signature Verified" 메시지가 나타나며 토큰의 유효성이 성공적으로 검증됩니다.

IMPORTANT

dotnet user-jwts key 로 표시된 Signing Key 는 개발 환경에서만 사용하는 키이므로 외부로 유출되지 않도록 주의하세요. jwt.io 는 로컬 브라우저에서만 동작하지만, 보안에 민감한 운영 환경에서는 사용하지 않습니다.

5. 개발 시 활용 팁
  • API 테스트 도구와 함께 사용하기
    복사한 JWT 토큰을 Postman, VSCode REST Client 등의 API 테스트 도구에서 Authorization 헤더에 추가하여 API 테스트에 활용할 수 있습니다.

  • 토큰 만료 시간 확인
    개발 시 토큰의 exp (만료 시간)을 확인하여 테스트 중 예상치 못한 만료 오류를 방지할 수 있습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com