JSON Web Token (JWT) è uno standard per creare access token, che consentono di condividere dati tra server in maniera sicura. Normalmente, JWT viene utilizzato per implementare l’autenticazione ed autorizzazioni negli API.
Qui ci sono i passaggi base per implementare l’autorizzazione e l’autenticazione JWT in una applicazione web, utilizzando Node.js, Express e una libreria chiamata jsonwebtoken:
1. Installazione del pacchetto jsonwebtoken:
```
npm install jsonwebtoken
```
1. Creazione del token JWT quando l’utente si autentica:
Durante il processo di autenticazione, dopo aver verificato le credenziali dell’utente (es. confrontare la password fornita con quella nel database), creerai un token JWT.
```
const jwt = require(‘jsonwebtoken’);
// …
// Dopo aver verificato le credenziali dell’utente…
const user = { id: 123 }; // Questo dovrebbe essere l’utente autenticato
const token = jwt.sign(user, ‘your-unique-secret-key’, { expiresIn: ‘1h’ });
```
In questo esempio, ‘your-unique-secret-key’ è una stringa segreta usata per firmare il token. La scelta di questa stringa è molto importante per la sicurezza del tuo sistema.
1. Invio del token all’utente:
Dopo aver creato il token, dovrai inviarlo al client. Questo di solito si fa impostando il token come un cookie, o includendolo nel corpo della risposta.
```
res.json({ token });
```
1. Protezione delle rotte con JWT:
Per proteggere una rotta con JWT, avrai bisogno di creare un middleware che verifica il token.
```
const jwt = require(‘jsonwebtoken’);
function authenticateToken(req, res, next) { const authHeader = req.headers[‘authorization’]; const token = authHeader && authHeader.split(’ ‘)1;
if (!token) return res.sendStatus(401); // Se non c’è un token, rispondi con ’401 Unauthorized’ jwt.verify(token, ‘your-unique-secret-key’, (err, user) => { if (err) return res.sendStatus(403); // Se c’è un errore durante la verifica (es. il token è scaduto), rispondi con ’403 Forbidden‘ req.user = user; next(); }); } ``` Puoi ora usarlo per proteggere le rotte richieste. Ad esempio:```
app.get(‘/protected-route’, authenticateToken, (req, res) => {
// Se questo codice viene eseguito, significa che l’utente è autenticato!
res.send(‘Benvenuto nella rotta protetta!’);
});
```
Ricorda, l’implementazione esatta dipenderà dal tuo specifico framework e linguaggio di programmazione. I passaggi di base rimarranno gli stessi: crea un token quando un utente si autentica, invia il token al client, e verifica il token quando il client fa una richiesta a una rotta protetta.