Token JWT
Τα JSON Web Tokens (JWT) προσφέρουν μια ασφαλή μέθοδο μετάδοσης πληροφοριών ανάμεσα σε δύο πλευρές ως αντικείμενο JSON.
Δομή του JWT
Ένα JWT αποτελείται από τρία μέρη που χωρίζονται με τελείες:
header.payload.signatureΚεφαλίδα
{ "alg": "HS256", "typ": "JWT"}Ωφέλιμο φορτίο
{ "sub": "1234567890", "iat": 1516239022, "exp": 1516242622}Υπογραφή
Η υπογραφή δημιουργείται ως εξής:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)Δημιουργία token JWT
Παράδειγμα σε Node.js
const jwt = require('jsonwebtoken');
const payload = { userId: '12345', scope: ['email', 'contacts']};
const token = jwt.sign(payload, process.env.JWT_SECRET, { expiresIn: '1h', issuer: 'your-app', audience: 'brevo-api'});Παράδειγμα σε Python
import jwtimport datetime
payload = { 'user_id': '12345', 'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1), 'iat': datetime.datetime.utcnow()}
token = jwt.encode(payload, 'your-secret-key', algorithm='HS256')Χρήση JWT με το API του Brevo
curl -X GET "https://api.brevo.com/v3/account" \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \ -H "Accept: application/json"Επικύρωση token
const validateToken = (token) => { try { const decoded = jwt.verify(token, process.env.JWT_SECRET); return { valid: true, payload: decoded }; } catch (error) { return { valid: false, error: error.message }; }};Βέλτιστες πρακτικές
- Χρησιμοποιείτε ισχυρά, τυχαία μυστικά κλειδιά
- Ορίζετε κατάλληλους χρόνους λήξης
- Επικυρώνετε τα token σε κάθε αίτημα
- Χρησιμοποιείτε αποκλειστικά HTTPS
- Αποθηκεύετε τα μυστικά κλειδιά με ασφάλεια
- Υλοποιήστε λογική ανανέωσης των token