Outils recommandés
Analyse JWT
Outil d'analyse de JWT Token, analyse et vérification de JSON Web Token
Apercu de l'outil : Outil d'Analyse JWT
JWT (JSON Web Token) est un format de jeton compact et sécurisé pour URL utilisé pour transférer des informations de manière sécurisée entre les parties. Il est principalement utilisé dans l'authentification web, l'authentification d'API, l'échange d'informations et d'autres scénarios, étant l'une des technologies importantes du développement web moderne.
Qu'est-ce que Outil d'Analyse JWT ?
Outil d'Analyse JWT analyse le contenu structuré et met en avant les champs clés.
Comment l'utiliser
- Collez le contenu à analyser.
- L'outil extrait et affiche les champs.
- Copiez les champs nécessaires.
Cas d'usage courants
- Inspecter les champs clés en intégration
- Déboguer la structure et le format
- Documenter des données structurées
❓ FAQ
Q1 : Pourquoi le résultat est incorrect ?
R : Vérifiez le format d'entrée et les options, puis essayez l'exemple s'il existe.
Q2 : Et si l'entrée est très grande ?
R : Découpez les données en plus petits blocs pour plus de stabilité.
Q3 : Comment sauvegarder la sortie ?
R : Utilisez les boutons de copie ou de téléchargement si l'outil les propose.
✨ Caractéristiques Principales
- 🔍 Analyse Complète : Analyse détaillée d'Header, Payload et Signature
- ✅ Validation de Format : Vérification automatique de l'exactitude de la structure JWT
- 📊 Visualisation : Informations structurées affichées au format JSON
- 🔧 Support de Débogage : Vérification et débogage de jetons pendant le développement
- 📋 Copie en Un Clic : Les résultats d'analyse peuvent être copiés directement
📖 Exemples d'Utilisation
JWT Standard
JWT d'Entrée :
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlBpZXJyZSBEdXBvbnQiLCJpYXQiOjE1MTYyMzkwMjJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Résultat d'Analyse :
Header :
{
"alg": "HS256",
"typ": "JWT"
}
Payload :
{
"sub": "1234567890",
"name": "Pierre Dupont",
"iat": 1516239022
}
Signature :
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Payload Complexe
JWT d'Entrée (Claims Complexes) :
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEyMzQ1In0.eyJpc3MiOiJodHRwczovL2F1dGgudG9vbG1pLmNvbSIsInN1YiI6InVzZXJfMTIzNDUiLCJhdWQiOlsiYXBpLnRvb2xtaS5jb20iLCJhZG1pbi50b29sbWkuY29tIl0sImV4cCI6MTY4NzUzNjAwMCwiaWF0IjoxNjg3NDQ5NjAwLCJuYmYiOjE2ODc0NDk2MDAsImp0aSI6ImFiY2RlZi0xMjM0NTYiLCJuYW1lIjoiTWFyaWUgRHVyYW5kIiwiZW1haWwiOiJtYXJpZUBleGFtcGxlLmNvbSIsInJvbGVzIjpbInVzZXIiLCJhZG1pbiJdLCJwZXJtaXNzaW9ucyI6WyJyZWFkIiwid3JpdGUiLCJkZWxldGUiXX0.signature_here
Résultat d'Analyse :
Header :
{
"alg": "RS256",
"typ": "JWT",
"kid": "12345"
}
Payload :
{
"iss": "https://auth.toolmi.com",
"sub": "user_12345",
"aud": ["api.toolmi.com", "admin.toolmi.com"],
"exp": 1687536000,
"iat": 1687449600,
"nbf": 1687449600,
"jti": "abcdef-123456",
"name": "Marie Durand",
"email": "marie@example.com",
"roles": ["user", "admin"],
"permissions": ["read", "write", "delete"]
}
🎯 Scénarios d'Application
1. Système d'Authentification Web
Authentification d'utilisateurs utilisant JWT :
// Processus de connexion
const seConnecter = async (email, motDePasse) => {
try {
const reponse = await fetch('/api/auth/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ email, motDePasse })
});
if (reponse.ok) {
const donnees = await reponse.json();
const jeton = donnees.token;
// Sauvegarder JWT dans le stockage local
localStorage.setItem('authToken', jeton);
// Analyser le contenu du jeton
const payload = analyserJWT(jeton);
console.log('Informations utilisateur:', payload);
return { succes: true, utilisateur: payload };
} else {
throw new Error('Erreur de connexion');
}
} catch (erreur) {
console.error('Erreur de connexion:', erreur);
return { succes: false, erreur: erreur.message };
}
};
// Fonction d'analyse JWT
const analyserJWT = (jeton) => {
try {
const base64Url = jeton.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
return JSON.parse(jsonPayload);
} catch (erreur) {
console.error('Erreur d\'analyse JWT:', erreur);
return null;
}
};
// Vérifier l'état d'authentification
const verifierEtatAuth = () => {
const jeton = localStorage.getItem('authToken');
if (!jeton) {
return { authentifie: false };
}
const payload = analyserJWT(jeton);
if (!payload) {
return { authentifie: false };
}
// Vérifier la date d'expiration du jeton
const tempsActuel = Math.floor(Date.now() / 1000);
if (payload.exp && payload.exp < tempsActuel) {
localStorage.removeItem('authToken');
return { authentifie: false, raison: 'expire' };
}
return {
authentifie: true,
utilisateur: payload,
expireDans: payload.exp
};
};
2. Authentification d'API
Utilisation de JWT dans les requêtes d'API :
// Classe client API
class ClientAPI {
constructor(urlBase) {
this.urlBase = urlBase;
this.jeton = localStorage.getItem('authToken');
}
// Requête avec en-tête d'authentification
async requete(endpoint, options = {}) {
const url = `${this.urlBase}${endpoint}`;
const enTetes = {
'Content-Type': 'application/json',
...options.enTetes
};
// Ajouter le jeton JWT à l'en-tête Authorization
if (this.jeton) {
enTetes.Authorization = `Bearer ${this.jeton}`;
}
try {
const reponse = await fetch(url, {
...options,
headers: enTetes
});
// Si erreur 401, le jeton est invalide
if (reponse.status === 401) {
this.gererNonAutorise();
throw new Error('Authentification requise');
}
if (!reponse.ok) {
throw new Error(`Erreur HTTP! statut: ${reponse.status}`);
}
return await reponse.json();
} catch (erreur) {
console.error('Erreur de requête API:', erreur);
throw erreur;
}
}
// Gestion d'erreur d'authentification
gererNonAutorise() {
localStorage.removeItem('authToken');
this.jeton = null;
// Rediriger vers la page de connexion
window.location.href = '/login';
}
// Mettre à jour le jeton
mettreAJourJeton(nouveauJeton) {
this.jeton = nouveauJeton;
localStorage.setItem('authToken', nouveauJeton);
}
// Obtenir le profil utilisateur
async obtenirProfilUtilisateur() {
return await this.requete('/api/user/profile');
}
// Obtenir des données
async obtenirDonnees(endpoint) {
return await this.requete(endpoint);
}
// Mettre à jour des données
async mettreAJourDonnees(endpoint, donnees) {
return await this.requete(endpoint, {
method: 'PUT',
body: JSON.stringify(donnees)
});
}
}
// Exemple d'utilisation
const clientApi = new ClientAPI('https://api.toolmi.com');
// Obtenir le profil utilisateur
clientApi.obtenirProfilUtilisateur()
.then(profil => {
console.log('Profil utilisateur:', profil);
})
.catch(erreur => {
console.error('Erreur lors de l\'obtention du profil:', erreur);
});
🔧 Détails Techniques
Structure JWT
JWT est composé de trois parties :
1. Header (En-tête)
{
"alg": "HS256", // Algorithme de signature
"typ": "JWT" // Type de jeton
}
2. Payload (Charge utile)
{
"iss": "issuer", // Émetteur
"sub": "subject", // Sujet
"aud": "audience", // Audience
"exp": 1234567890, // Date d'expiration
"iat": 1234567890, // Temps d'émission
"nbf": 1234567890, // Pas valide avant
"jti": "jwt-id" // ID JWT
}
3. Signature
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
Claims Standard
Claims standard utilisés dans JWT :
- iss (Issuer) : Émetteur du jeton
- sub (Subject) : Sujet du jeton (généralement ID utilisateur)
- aud (Audience) : Audience du jeton
- exp (Expiration Time) : Date d'expiration (timestamp Unix)
- iat (Issued At) : Temps d'émission
- nbf (Not Before) : Temps de début de validité
- jti (JWT ID) : Identifiant unique du JWT
💡 Conseils d'Utilisation
- Vérification d'Expiration : Vérifier la date d'expiration du jeton avec le claim exp
- Sécurité : Ne pas inclure d'informations confidentielles dans le payload
- Vérification de Signature : Toujours vérifier la signature en environnement de production
- Taille du Jeton : Faire attention à ce que le payload ne soit pas trop volumineux
⚠️ Notes Importantes
- Informations Confidentielles : Le payload de JWT n'est pas chiffré, donc ne doit pas inclure d'informations confidentielles
- Vérification de Signature : Cet outil analyse seulement, ne vérifie pas les signatures
- Date d'Expiration : Ne pas utiliser de jetons expirés
- Lieu de Stockage : Faire attention au lieu de stockage des jetons dans le navigateur (prévention XSS)
🚀 Comment Utiliser
- Saisie JWT : Collez le jeton JWT à analyser dans la zone de saisie
- Analyse Automatique : Header, Payload et Signature sont analysés automatiquement lors de la saisie
- Vérification des Résultats : Vérifiez les informations détaillées de chaque partie au format JSON
- Utilisation de Copie : Utilisez le bouton "Copier" pour copier les résultats d'analyse dans le presse-papiers
- Utilisation en Débogage : Utilisez pour la vérification et le débogage de jetons pendant le développement
Conseil : Cet outil traite localement côté client et n'envoie pas de jetons JWT au serveur, garantissant la sécurité.