| Current Path : /var/www/fidelitychain/www/ |
| Current File : //var/www/fidelitychain/www/verify.js |
// Only for test standalone
const jwt = require('jsonwebtoken');
const axios = require('axios');
const jwkToPem = require('jwk-to-pem');
const bearerToken = 'eyJ4NXQiOiJZVEE1WmpZNVl6aGxPVFpoWVRRNU9EazJOell5WmpObFpEa3lZbUV5WmpJM05ESmtPRGsxWkRnd09XUmpPVFl6T0dSall6Z3pNek5rTUdNNU1USXlNZyIsImtpZCI6IllUQTVaalk1WXpobE9UWmhZVFE1T0RrMk56WXlaak5sWkRreVltRXlaakkzTkRKa09EazFaRGd3T1dSak9UWXpPR1JqWXpnek16TmtNR001TVRJeU1nX1JTMjU2IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJhZG1pbiIsImF1dCI6IkFQUExJQ0FUSU9OIiwiYXVkIjpbIkxkS1BSZmNXNl96YXlxNGszZkpKcDJvdUVpTWEiLCJodHRwczpcL1wvYXUudGVzdC5pbmNvb3BlcmF6aW9uZS5pdFwvaW5jb29wZXJhemlvbmVzZXJ2aWNlcyIsImh0dHBzOlwvXC9jcm0udGVzdC5pbmNvb3BlcmF6aW9uZS5pdCJdLCJuYmYiOjE3MDAxNDU4NzUsImF6cCI6IkxkS1BSZmNXNl96YXlxNGszZkpKcDJvdUVpTWEiLCJpc3MiOiJodHRwczpcL1wvYXV0aC50ZXN0LmluY29vcGVyYXppb25lLml0Ojk0NDNcL29hdXRoMlwvdG9rZW4iLCJleHAiOjE3MDAxNDk0NzUsImlhdCI6MTcwMDE0NTg3NSwianRpIjoiOGMyYzY4MjAtYmVkNS00ZWYyLTgyZjEtNDM3YjE2YjcxMjQ4In0.wRKK8ZpditmZLcyA1PH3tynvXBhuUnuUgVl2Wu2fMZBA0rjd3GINp15jlftV-Uo4cvnFRlEIpwVuFG_CoR5H06YjTixOJ46mH0eKtpyTRhOZJYDqFxVOaPwyZ6KxjPRFcoQjiFn3XfvoHLi0dZ__8K04hBHHq0XND5A8AlR9R-UvYVAYOZpvx8XnLSdx5End2W_vV7Z-rh5AlWI8kIFJ_jWVA4Bxy2GMj2WD_bO3-GAiHZR03XRscnj6WcC4wHrhhHNMJlvk3e9bnbvMYsN-yDopdxY_poHi3eByLVdmgW1We9ZQYVtb_XgoZ8lBQ2-zBXyPTxJDu0Chgjyd2i79pQ';
const jwkUrl = 'https://auth.test.incooperazione.it:9443/oauth2/jwks';
axios.get(jwkUrl)
.then(response => {
const jwk = response.data.keys[0];
console.log('JWK received:', jwk);
validateToken(bearerToken, jwk);
})
.catch(error => {
console.error('Error getting the JWK:', error);
});
async function validateToken(bearerToken, jwk) {
const pemPublicKey = jwkToPem(jwk);
jwt.verify(bearerToken, pemPublicKey, (err, decoded) => {
if (err) {
console.error('Error verifying token:', err);
} else {
console.log('Decoded token:', decoded);
}
});
}
/*
// Extracting the public key from the JWK
const publicKey = `-----BEGIN PUBLIC KEY-----
${jwk.n}
-----END PUBLIC KEY-----`;
// Function to validate the token
async function validateToken(bearerToken, publicKey) {
try {
// Verifying the JWT token
const decoded = jwt.verify(bearerToken, publicKey, { algorithms: ['RS256'] });
// Token is valid
console.log('Valid token:', decoded);
// Perform actions with the valid token
// ...
return decoded;
} catch (error) {
// Invalid token or validation error
console.error('Invalid token:', error);
throw error;
}
}
// Calling the token validation function
validateToken(bearerToken, publicKey)
.then((decodedToken) => {
console.log("SONO QUI\n\n");
})
.catch((error) => {
console.log("ERRORE\n");
console.dir(error);
// Handle the error
// ...
});
*/
/*
const jwt = require('jsonwebtoken');
const axios = require('axios');
const bearerToken = 'eyJ4NXQiOiJZVEE1WmpZNVl6aGxPVFpoWVRRNU9EazJOell5WmpObFpEa3lZbUV5WmpJM05ESmtPRGsxWkRnd09XUmpPVFl6T0dSall6Z3pNek5rTUdNNU1USXlNZyIsImtpZCI6IllUQTVaalk1WXpobE9UWmhZVFE1T0RrMk56WXlaak5sWkRreVltRXlaakkzTkRKa09EazFaRGd3T1dSak9UWXpPR1JqWXpnek16TmtNR001TVRJeU1nX1JTMjU2IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJhZG1pbiIsImF1dCI6IkFQUExJQ0FUSU9OIiwiYXVkIjpbIkxkS1BSZmNXNl96YXlxNGszZkpKcDJvdUVpTWEiLCJodHRwczpcL1wvYXUudGVzdC5pbmNvb3BlcmF6aW9uZS5pdFwvaW5jb29wZXJhemlvbmVzZXJ2aWNlcyIsImh0dHBzOlwvXC9jcm0udGVzdC5pbmNvb3BlcmF6aW9uZS5pdCJdLCJuYmYiOjE3MDAxNDU4NzUsImF6cCI6IkxkS1BSZmNXNl96YXlxNGszZkpKcDJvdUVpTWEiLCJpc3MiOiJodHRwczpcL1wvYXV0aC50ZXN0LmluY29vcGVyYXppb25lLml0Ojk0NDNcL29hdXRoMlwvdG9rZW4iLCJleHAiOjE3MDAxNDk0NzUsImlhdCI6MTcwMDE0NTg3NSwianRpIjoiOGMyYzY4MjAtYmVkNS00ZWYyLTgyZjEtNDM3YjE2YjcxMjQ4In0.wRKK8ZpditmZLcyA1PH3tynvXBhuUnuUgVl2Wu2fMZBA0rjd3GINp15jlftV-Uo4cvnFRlEIpwVuFG_CoR5H06YjTixOJ46mH0eKtpyTRhOZJYDqFxVOaPwyZ6KxjPRFcoQjiFn3XfvoHLi0dZ__8K04hBHHq0XND5A8AlR9R-UvYVAYOZpvx8XnLSdx5End2W_vV7Z-rh5AlWI8kIFJ_jWVA4Bxy2GMj2WD_bO3-GAiHZR03XRscnj6WcC4wHrhhHNMJlvk3e9bnbvMYsN-yDopdxY_poHi3eByLVdmgW1We9ZQYVtb_XgoZ8lBQ2-zBXyPTxJDu0Chgjyd2i79pQ';
const publicKey = 'your_public_key_here';
const authorityUrl = 'https://auth.test.incooperazione.it:9443/oauth2/jwks';
const audienceUrl = 'https://www.ftcoop.it/InCooperazioneServices';
const metadataAddressUrl = 'https://auth.test.incooperazione.it:9443/oauth2/oidcdiscovery/.well-known/openid-configuration';
// Funzione per ottenere la chiave pubblica dal Metadata Address
async function getPublicKeyFromMetadataAddress(metadataAddressUrl) {
try {
const response = await axios.get(metadataAddressUrl); // Richiede i metadati all'endpoint Metadata
const metadata = response.data;
const publicKeyFromMetadata = metadata.publicKey; // Sostituisci con la struttura effettiva dei metadati
return publicKeyFromMetadata;
} catch (error) {
console.error('Errore nel recupero della chiave pubblica dai metadati:', error);
throw error;
}
}
// Funzione per la validazione del token JWT
async function validateToken(bearerToken, publicKey, authorityUrl, audienceUrl, metadataAddressUrl) {
try {
// Verifica il token JWT
const decoded = jwt.verify(bearerToken, publicKey, {
audience: audienceUrl,
issuer: authorityUrl
});
// Token valido
console.log('Token valido:', decoded);
// Puoi anche recuperare la chiave pubblica dal Metadata Address (se necessario)
const publicKeyFromMetadata = await getPublicKeyFromMetadataAddress(metadataAddressUrl);
console.log('Chiave pubblica dai metadati:', publicKeyFromMetadata);
// Eseguire altre azioni con il token valido
// ...
return decoded;
} catch (error) {
// Token non valido o errore nella validazione
console.error('Token non valido:', error);
throw error;
}
}
// Esegui la funzione di validazione del token
validateToken(bearerToken, publicKey, authorityUrl, audienceUrl, metadataAddressUrl)
.then((decodedToken) => {
console.log("SONO QUI\n\n");
})
.catch((error) => {
console.log("ERRORE\n");
console.dir(error);
// Gestisci l'errore
// ...
});
*/