JWTジェネレーターガイド:HS256/RS256署名トークンの作成
ユーティリティ(更新: 2026年6月17日)
JWTとは
JSON Web Token(JWT)は、コンパクトで自己完結型のトークン形式で、認証や情報交換に広く使用されます:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlRhcm8iLCJpYXQiOjE3MDAwMDAwMDAsImV4cCI6MTcwMDAwODAwMH0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
↑ Header ↑ Payload ↑ Signature
JWTは3つのBase64URLエンコードされた文字列を
.で区切って構成されます。
3段構造の詳細
Header(ヘッダー)
{
"alg": "HS256",
"typ": "JWT"
}
| フィールド | 意味 |
|---|---|
alg |
署名アルゴリズム:HS256、RS256など |
typ |
トークンタイプ、常にJWT |
Payload(ペイロード)
{
"sub": "1234567890",
"name": "太郎",
"role": "admin",
"iat": 1700000000,
"exp": 1700008000
}
| フィールド | 意味 | 必須 |
|---|---|---|
sub |
サブジェクト(ユーザーID) | 推奨 |
iat |
発行時刻(Issued At) | 推奨 |
exp |
有効期限(Expiration) | 必須 |
iss |
発行者(Issuer) | 任意 |
aud |
受信者(Audience) | 任意 |
nbf |
有効開始時刻(Not Before) | 任意 |
Signature(署名)
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
署名はトークンが改ざんされていないことを保証しますが、ペイロードはデフォルトで暗号化されていません——機密情報を入れないでください!
HS256 vs RS256
| 比較項目 | HS256 | RS256 |
|---|---|---|
| アルゴリズム種別 | 対称暗号(HMAC) | 非対称暗号(RSA) |
| 鍵 | 共有シークレット(文字列) | 公開鍵 + 秘密鍵 |
| 検証者 | 同じシークレットが必要 | 公開鍵のみで検証可能 |
| 用途 | 単一サービス、内部マイクロサービス | マルチサービス、サードパーティ検証 |
| 鍵管理 | 簡単だが漏洩リスクが高い | より安全、公開鍵を配布可能 |
選択の目安:モノリスにはHS256、マイクロサービス/オープンAPIにはRS256。
JWTジェネレーターの使い方
ステップ1:ツールを開く
JWTジェネレーター にアクセスし、トークン作成画面に入ります。
ステップ2:署名アルゴリズムを選択
- 単一サービス:HS256 を選択し、共有シークレットを入力
- マルチサービス:RS256 を選択し、秘密鍵を貼り付け
ステップ3:ペイロードを入力
ペイロードエディターでClaimsを追加:
{
"sub": "user_10086",
"name": "太郎",
"role": "admin",
"iat": 1700000000,
"exp": 1700008000
}
iatとexpはUnixタイムスタンプ(秒)を使用。ツールは有効期限の視覚的設定に対応しています。
ステップ4:トークンを生成
「生成」をクリック。ツールが自動的に:
- HeaderをBase64URLエンコード
- PayloadをBase64URLエンコード
- 鍵を使用して署名を計算
- 完全なJWT文字列に連結
ステップ5:トークンを検証
生成されたトークンを JWTデコーダー に貼り付け、確認:
- HeaderとPayloadが正しくデコードされる
- 署名検証が通る
exp時間が過ぎていない
有効期限のベストプラクティス
| シナリオ | 推奨 exp | 理由 |
|---|---|---|
| Access Token | 15-30分 | 短命で漏洩リスクを低減 |
| Refresh Token | 7-30日 | 長命、再発行に使用 |
| メール確認リンク | 1-24時間 | ワンタイム使用 |
| API Key | expなしまたは1年以上 | 長期資格情報 |
| Access Token + Refresh Token のダブルトークン方式の併用を推奨します。
Base64URLエンコードの注意点
JWTはBase64URLエンコードを使用します。標準Base64との違い:
| 違い | 標準Base64 | Base64URL |
|---|---|---|
+ |
+ |
- |
/ |
/ |
_ |
パディング = |
あり | なし |
Base64エンコード/デコードツール を使用する際は、URLセーフモードを選択してください。
よくある問題
| 問題 | 原因 | 解決策 |
|---|---|---|
| 署名検証失敗 | 鍵の不一致 | 生成と検証で同じ鍵を使用しているか確認 |
| トークン期限切れ | exp時間が経過 | 再生成またはRefresh Tokenを使用 |
| ペイロードが文字化け | Base64URLでデコードされていない | JWTデコーダー を使用 |
| 機密情報の漏洩 | ペイロードが暗号化されていない | パスワード等をペイロードに入れない |
| RS256検証失敗 | 公開鍵の不一致 | 公開鍵と秘密鍵が同じペアか確認 |
まとめ
JWTはモダンWeb認証の中核技術です。3段構造とHS256/RS256の違いを理解し、Claimsと有効期限を正しく設定することが、安全なJWT利用の鍵です。JWTジェネレーター と JWTデコーダー で、ブラウザ内でトークンの作成、デコード、検証の全工程を完結できます。
#JWT#Token生成#HS256#RS256#认证