1단계: 기존 로컬 디렉토리 초기화
Git Bash 또는 VS Code 터미널에서:
cd ~
rm -rf jwt-generator
mkdir jwt-generator
cd jwt-generator
✅ 2단계: 기본 폴더 및 파일 구조 생성
<jwt-generator>/
├── api/
│ └── create-jwt.js
├── your-service-account-key.json
여기 있어야 함
├── .gitignore
├── vercel.json
├── README.md
1. .gitignore에 추가되어 있어야 하는 항목
nano .gitignore
내용:
your-service-account-key.json
이미 있으시면 그대로 두시면 됩니다.
2. 테스트용 또는 구조용 your-service-account-key.json 만들기
nano your-service-account-key.json
예시 내용 (구조만 보여줌, 실제 사용은 불가능):
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "abc123xyz456",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEv...endKey\n-----END PRIVATE KEY-----\n",
"client_email": "your-service-account@your-project-id.iam.gserviceaccount.com",
"client_id": "123456789012345678901",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account"
}
이 파일은 실제 발급받은 JSON을 복사해서 넣어야 작동합니다.
3. 커밋/푸시 전에 주의사항
git rm --cached your-service-account-key.json # 혹시 실수로 add 했을 경우
이후:
git add .
git commit -m "Add local service account key (excluded from Git)"
git push
푸시되는 건
.js,.json구조 파일이지만, key JSON은 제외됨
결론 요약
| 항목 | 설명 |
|---|---|
your-service-account-key.json 필요 여부 | |
루트 디렉토리 (jwt-generator/) | |
.gitignore에 포함 | |
절대 금지 (git rm --cached로 제거 가능) | |
| 가능 (단, 발급된 키 붙여야 작동) |
필요하시면 이 키 파일을 사용하는 Google Indexing API 또는 Drive API 예제까지 확장해드릴 수 있습니다.
지금 정말 중요한 기초를 정확히 잡고 계세요. 멋지십니다!
nano를 이용해 하나하나 직접 작성할 수 있도록, 각 파일을 만드는 명령과 들어갈 내용까지 정리된 스크립트를 순서대로 알려드릴게요.
✅ Git bash 작업순서
cd ~
rm -rf jwt-generator
mkdir jwt-generator
cd jwt-generator
mkdir api
cd ..🧾 1. .gitignore 생성 및 작성
nano .gitignore
내용 (직접 입력하세요):
node_modules/
.env
your-service-account-key.json
.DS_Store
*.log
입력 후:
Ctrl + O→Enter→Ctrl + X로 저장하고 나가기
🧾 2. vercel.json 생성 및 작성
nano vercel.json
내용:
{
"version": 2,
"builds": [
{ "src": "api/*.js", "use": "@vercel/node" }
],
"routes": [
{ "src": "/api/(.*)", "dest": "/api/$1.js" }
]
}
저장:
Ctrl + O→Enter→ 나가기:Ctrl + X
🧾 3. README.md 생성 및 작성
nano README.md
내용:
# jwt-generator
JWT 생성 API를 테스트하기 위한 Vercel 기반 프로젝트입니다.
🧾 4. api/create-jwt.js 생성 및 작성
nano api/create-jwt.js
JWT 발급 기능 포함 버전:
import jwt from 'jsonwebtoken';
export default function handler(req, res) {
const payload = {
user: 'openpage.store',
role: 'admin'
};
const secret = process.env.JWT_SECRET || 'default-secret';
const token = jwt.sign(payload, secret, { expiresIn: '1h' });
res.status(200).json({ jwt: token });
}
🧾 5. .env 생성 및 작성 (보안용)
nano .env
내용:
JWT_SECRET=your-super-secret-key
❗주의: .gitignore에 .env가 반드시 포함되어 있어야 합니다!
✅ Git 초기화 및 푸시 준비
git init
git remote add origin https://github.com/besalt777/jwt-generator.git
git add .
git commit -m "Initial secure setup with JWT API"
git push -u origin main
🛡️ 보안 체크리스트
| 항목 | 상태 |
|---|---|
.gitignore에 .env 있음 | ✅ |
.env는 Git에 add 되지 않음 | ✅ |
Vercel에 환경 변수 JWT_SECRET 등록 | ✅ (Vercel > Settings > Environment Variables) |
✅ Git 초기화 및 푸시 준비
git init
git remote add origin https://github.com/besalt777/jwt-generator.git
git add .
git commit -m "Initial secure setup with JWT API"
git push -u origin main
🛡️ 보안 체크리스트
| 항목 | 상태 |
|---|---|
.gitignore에 .env 있음 | ✅ |
.env는 Git에 add 되지 않음 | ✅ |
Vercel에 환경 변수 JWT_SECRET 등록 | ✅ (Vercel > Settings > Environment Variables) |
그런데 현재 상태는 왜 JWT를 생성하지 않나요?
지금의 create-jwt.js는 아래처럼 단순한 응답만 반환하고 있습니다:
export default function handler(req, res) {
res.status(200).json({ message: "JWT 생성 준비 완료" });
}
즉, 실제로 JWT를 발급하거나 암호화하지 않고, 그냥 문자열을 보여주기만 하는 “테스트용” 코드입니다.
✅ 2. JWT 발급을 하려면 어떤 게 필요할까요?
✔ JWT 생성에는 두 가지가 필요합니다:
JWT 라이브러리 → 가장 많이 쓰는 건
jsonwebtoken패키지비밀 키(secret) → 이 키로 JWT를 암호화합니다
✅ 3. 지금 바로 JWT 생성 기능 추가하기 (단계별 안내)
📦 1단계: 로컬에서 jsonwebtoken 설치
npm init -y
npm install jsonwebtoken
package.json과node_modules/폴더가 생성됩니다.
node_modules/는.gitignore에 이미 추가되어 있어야 GitHub에 올라가지 않아요. (👌)
✍️ 2단계: api/create-jwt.js 수정
import jwt from 'jsonwebtoken';
export default function handler(req, res) {
const payload = {
user: ‘openpage.store’,
role: ‘admin’
};
const secret = process.env.JWT_SECRET || ‘default-secret’; // 나중에 환경변수로 설정
const token = jwt.sign(payload, secret, { expiresIn: ‘1h’ });
res.status(200).json({ jwt: token });
}
📁 3단계: .env 파일 만들기 (보안용)
touch .env
파일 내용:
JWT_SECRET=your-super-secret-key
🔐 이
.env파일은 절대 Git에 올리면 안 됩니다..gitignore에 이미 포함되어 있어야 합니다.
🌍 4단계: Vercel에 환경 변수 등록
https://vercel.com → 프로젝트 선택
Settings → Environment Variables
변수 등록:
| Key | Value |
|---|---|
JWT_SECRET | your-super-secret-key |
등록 후에는 재배포하면 적용됩니다.
✅ 4. 결과
이제 브라우저 또는 Postman에서 호출하면 아래처럼 응답됩니다:
POST https://jwt-generator.vercel.app/api/create-jwt
응답:
{
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
🧪 5. 토큰 검증 예시 (참고용)
토큰을 검증하려면 이 코드로 할 수 있습니다:
const decoded = jwt.verify(token, secret);
🧭 요약
| 항목 | 해야 할 일 |
|---|---|
jsonwebtoken 설치 | npm install jsonwebtoken |
| 비밀 키 환경변수로 관리 | .env → JWT_SECRET=... |
| API 파일 수정 | jwt.sign() 함수로 토큰 생성 |
| Vercel에 환경 변수 등록 | Settings → Environment Variables |
ChatGPT의 말:
아주 좋은 질문입니다! 🙌.env 파일을 만든 후에는 Git에 포함되지 않도록 안전하게 관리하면서 커밋하는 방법이 중요합니다.
지금부터 실수 없이 진행할 수 있도록 .env 파일 추가 후 Git 커밋 절차를 정리해드릴게요.
✅ 1. .env 파일 만들기
touch .env
📄 내용 작성:
JWT_SECRET=your-super-secret-key
✅ 2. .gitignore에 .env 포함되어 있는지 확인
cat .gitignore
✅ .gitignore에 아래 줄이 반드시 포함되어야 합니다:
.env
만약 없다면 추가하세요:
echo ".env" >> .gitignore
✅ 3. Git 캐시에서 .env 제거 (혹시 이전에 add 했던 경우)
실수로
git add .을 해서.env가 Git 추적 대상이 된 경우엔 아래 명령으로 제거하세요:
git rm --cached .env
✅ 4. 커밋하고 푸시
git add .
git commit -m "Add JWT token generation logic and secure .env handling"
git push --force
🔐 요약 체크리스트
| 항목 | 상태 | 설명 |
|---|---|---|
.env 파일 생성 | ✅ | 비밀 키 보관용 |
.gitignore에 .env 포함 | ✅ | GitHub에 올라가지 않도록 |
git rm --cached .env 실행 | ✅ (필요한 경우) | 실수로 추적 중인 경우 제거 |
git commit & push | ✅ | 코드만 안전하게 올림 |
✨ 커밋 메시지 예시
git commit -m "Add JWT token generation logic with .env for secret key"
이제 .env는 로컬에만 있고 Git에는 절대 포함되지 않기 때문에
GitHub도, Vercel도 비밀 정보 없이 안전하게 유지됩니다.
✅ Git 초기화 및 푸시 준비
git init
git remote add origin https://github.com/besalt777/jwt-generator.git
git add .
git commit -m "Initial secure setup with JWT API"
git push -u origin main
🛡️ 보안 체크리스트
| 항목 | 상태 |
|---|---|
.gitignore에 .env 있음 | ✅ |
.env는 Git에 add 되지 않음 | ✅ |
Vercel에 환경 변수 JWT_SECRET 등록 | ✅ (Vercel > Settings > Environment Variables) |