/***** index.js *****/ const express = require('express'); const ticket = require('./ticket'); var app = express(); app.get('/index.html', function(req,res) { console.log("accessed the index.html node page"); console.log("proxyRestUri: " + req.query.proxyRestUri); console.log("targetId: " + req.query.targetId); ticket.get_ticket_redirect(req.query.proxyRestUri, req.query.targetId, function(redirectUrl){ console.log("Redirecting to "+redirectUrl); res.redirect(redirectUrl); }); }); app.use('/', express.static('public')); app.listen(3000, function() { console.log("Listening on port 3000"); }); /***** ticket.js *****/ var fs = require('fs'); var request = require('request'); //define certificate folder var directory = "./"; var get_ticket_redirect = function(proxyRestUri, targetId, callback){ //set up request options var options = { uri: proxyRestUri + 'ticket?xrfkey=somerandomstring', headers: {'content-type': 'application/json', 'X-Qlik-xrfkey': 'somerandomstring', 'X-Qlik-user': 'UserDirectory=INTERNAL;UserId=sa_api' }, method: 'POST', body: { "UserDirectory": "QAD", "UserId": "djx", "Attributes": [], "TargetId": targetId }, json: true, ca: fs.readFileSync(directory+ "root.pem"), key: fs.readFileSync(directory+"client_key.pem"), cert: fs.readFileSync(directory+"client.pem"), rejectUnauthorized: false }; //send request request(options, function (error, response, body) { if(error) { console.log('Error: '+error); console.log(response); } else { console.log("== Got a ticket =="); console.log("Ticket: " + response.body.Ticket); console.log("TargetUri: " + response.body.TargetUri); callback(response.body.TargetUri + "?QlikTicket=" + response.body.Ticket); // This is the redirect URL! } }); } module.exports = { get_ticket_redirect: get_ticket_redirect }