Your IP : 216.73.216.14


Current Path : /var/www/fidelitychain/www/
Upload File :
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
        // ...
    });
*/