diff --git a/azure-qseow/client.pem b/azure-qseow/client.pem new file mode 100644 index 0000000..0dade3d --- /dev/null +++ b/azure-qseow/client.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDCjCCAfKgAwIBAgIQALHkhdJnD4HIsMPlvt0kwzANBgkqhkiG9w0BAQsFADAT +MREwDwYDVQQDDAhxc2Vvdy1DQTAeFw0yMTAyMDcyMDI3MjlaFw0zMTAyMTQyMDI3 +MjlaMBUxEzARBgNVBAMMClFsaWtDbGllbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQCPu0JXHGR2uPFQSxlAW1Fh0L1QOmZVYeyG0cI6V/2qxWUmJ25Y +VH1JZJtARYGJ6FPkRAIBiMEW0I8t3NDat7b2DmgzPR40x/K1rzS+m8/OpqafZImL +8tBOEvKcx/brRl3QA9ZPDTOtdnab+JV1ni4BMPMwv/Q3ZBfd26UGqlcYo6hlvpaH +hHamh4Iy6s21YjSws8Z2suCDLwJzRGL7OmkdFn7Mte1kGdKqfrJzYGpTFOnlWQLp +QQfVvTl/HjvWimgtQuAUDSog9fp/XQ3ReufJw6IyIzrsEMcFrUK+KQonVwMS1I0k +eoWbttk141RSr95BtSm8sQjcK9o2PEcc9mUzAgMBAAGjWDBWMB0GA1UdDgQWBBSZ +5ddde7n8OeFxMFdqDE2UmHYF0DAfBgNVHSMEGDAWgBRB2cs88xddN9xiHaa37MGe +MUxX0TAUBggrBgEFBQcNAwQIBAZDbGllbnQwDQYJKoZIhvcNAQELBQADggEBAF4D +hIUNQiyVlI9Z0Ateo+SS0gtf8ZJV4P3ueqcpjy2z6mk57hMQWq5cAf9b4E9pc6+a +ksFk9k8R/BM6zI6+AKATc2fciAErPIZeccvt8+iOAfNcHL64aeb1on76HyFGeuAq +NUePouRj8yh0OWd7MXR8gj9ZxcVqxRzO35IvMGZMlfCzZxdljozyd+twEdgFinFS +d/DN1/miJ4BMcur2QhqoIlyv3SDqLg4OfmGSo804kemGrO4RCQOGaaEltJ7RApYb +JD8gAU2uxO/z9+e8pAX43KcsoNCMlA8e7pw9u3h9PvoeoJwTBbn3eHdnGm47PRMi +ycbV7sqh/ypN6vxZSHc= +-----END CERTIFICATE----- diff --git a/azure-qseow/client_key.pem b/azure-qseow/client_key.pem new file mode 100644 index 0000000..c61b479 --- /dev/null +++ b/azure-qseow/client_key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAj7tCVxxkdrjxUEsZQFtRYdC9UDpmVWHshtHCOlf9qsVlJidu +WFR9SWSbQEWBiehT5EQCAYjBFtCPLdzQ2re29g5oMz0eNMfyta80vpvPzqamn2SJ +i/LQThLynMf260Zd0APWTw0zrXZ2m/iVdZ4uATDzML/0N2QX3dulBqpXGKOoZb6W +h4R2poeCMurNtWI0sLPGdrLggy8Cc0Ri+zppHRZ+zLXtZBnSqn6yc2BqUxTp5VkC +6UEH1b05fx471opoLULgFA0qIPX6f10N0XrnycOiMiM67BDHBa1CvikKJ1cDEtSN +JHqFm7bZNeNUUq/eQbUpvLEI3CvaNjxHHPZlMwIDAQABAoIBAD21TvkpZnSWWHx5 +kaDQ0/Lj9LOCLzdPMIZ9fh8gcfckgpXL7hMcSyH8gK8qaEA2L/ZbwGS6OvQ5nI87 +M6wDnhir/M6q2dIdWjXowANpz+FQKU9bkbY1DHvIpMLtEzTV5CcPzq3n5B0ANFIo +erqhq+y1AGQYtZgmcBy/VW20KmqYB3YiupHfB72SasMWl1G9BJ98dW7oQwIq4PZx +hAY3oWyC/KJRdOzIpJyTBWgCxYRWc43LU1sV/cqA+jlqGgBYfHRzJ8qjFOAk63XA +99Xh0ClmtSFztcLJZrV2xzIoVxKRyxExyGuSiJs4KnMlZT8FGhT1+RINZiLkOt1s +4Va3WdECgYEA9JcM4g4JguemJQ7MBklkW532B1hg5cr7X7aGMZi/ob5iuOSOm7dc +oRoGBXsOVFh5Cotowu3OQfwm2uQczhnbVjKTeMbJ93Y0s4PjToPAFX8gEdLzykEz +MI/3f9Gf1DvALwCYmeY7aHr+hk8LoCoQy4bGpDiwRlZT3XmArLC7k0kCgYEAlm+7 +qUcyiGqHNuVrnFs9DQLT1DbTKItBxfjjQVrNwkhcsQhQvde94akmQQSVZlD4efK1 +tbhYTDyt9HXvnD5ip7O9Z1cQA9zz0CSM+c6staOROdhbw+mpLUHFshoKfvZq3AOh ++S5ez46/kbIVLXs0L1gKlvKkw8tAaT9HM4GKeJsCgYBQU2ccukVvY0pSM0jX67R0 +ziylfuXbsczaQyRRF3wfz1m2pQEcrJxUICrIFADBvIiL6PrPwa+SRhAwpOe83AsH +hPafnJFpnr1yEydMesJTjPtoPyJnUwBPu4gpxxs5ZSIZjZWQPWdXScVbMIx93jLD +1JBaEG/7uZAzVRroG+aOWQKBgA1o9F+ImzaR2G/KT6dmcrDAOcXHBVet4jUVlJx0 +zbat4KVfSmNB4glFnMVa9T5jpWKpgg0q26QgHJmYEb3pyb2NRir6FdFiVtGNEIwM +IlUmuYFgif2SzKPeIxNXQuxCZxApuryNp6H05ZrFNyIQw3wc6wS9qHZTnfBD1cL/ +nypVAoGAOOCpu/AY0vKE3NSu4Mm7YzW1T2NQWKmWTw0gEQ4eXhzOkqb/ZrYoIRvH +JzuMaFfbyhChC4MASn9I3DQy+HPDHGLHhxc35xGTgRsdUfzs/31xSQ4kExZiUE8/ +moPe+sVCeRX8DwLqh6BgSDaa/9pz7SfvrEZUpMcflIvAM9g2dIQ= +-----END RSA PRIVATE KEY----- diff --git a/azure-qseow/jwt.js b/azure-qseow/jwt.js new file mode 100644 index 0000000..fa5432d --- /dev/null +++ b/azure-qseow/jwt.js @@ -0,0 +1,59 @@ +const fs = require('fs'); +const jwt = require('jsonwebtoken'); +const { http, https } = require('follow-redirects'); + +// Your Sense Enterprise installation hostname: +const senseHost = 'qseow.jprdonnelly.com'; + +// Your configured virtual proxy prefix for JWT authentication: +const proxyPrefix = 'jwt'; + +// The Sense Enterprise-configured user directory for the user you want to identify +// as: +const userDirectory = 'INTERNAL'; + +// The user to use when creating the session: +const userId = 'sa_api'; + +// The Sense Enterprise-configured JWT structure. Change the attributes to match +// your configuration: +const token = { + directory: userDirectory, + user: userId, +}; + +// Path to the private key used for JWT signing: +const privateKeyPath = './fort_private.key'; +const key = fs.readFileSync(path.resolve(__dirname, privateKeyPath)); + +// Sign the token using the RS256 algorithm: +const signedToken = jwt.sign(token, key, { algorithm: 'RS256' }); + +const options = { + hostname: 'central.browntown.local', + port: 4243, + path: '/qrs/about?xrfkey=abcdefghijklmnop', + method: 'GET', + // agent: 'Windows', + // login: 'INTERNAL\SA_API', + password: '', + headers: { + 'X-Qlik-Xrfkey' : 'abcdefghijklmnop', + 'X-Qlik-User' : `UserDirectory=${encodeURIComponent('INTERNAL')}; UserId=${encodeURIComponent('sa_api')}`, + 'Authorization' : 'Bearer ${signedToken}'} + }, + // key: fs.readFileSync("client_key.pem"), + // cert: fs.readFileSync("client.pem"), + // ca: fs.readFileSync("root.pem"), + // rejectUnauthorized: false +}; + +https.get(options, function(res) { + console.log("Got response: " + res.statusCode); + res.on("data", function(chunk) { + console.log("BODY: " + chunk); + }); + }).on('error', function(e) { + con + sole.log("Got error: " + e.message); +}); diff --git a/azure-qseow/root.pem b/azure-qseow/root.pem new file mode 100644 index 0000000..50ad894 --- /dev/null +++ b/azure-qseow/root.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDFzCCAf+gAwIBAgIQAMcHUrjO7gPVIDsf+EbVWzANBgkqhkiG9w0BAQsFADAT +MREwDwYDVQQDDAhxc2Vvdy1DQTAeFw0yMTAyMDcxNzA1MDRaFw0zMTAyMTQxNzA1 +MDRaMBMxETAPBgNVBAMMCHFzZW93LUNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAh7BhqD9YSOgPHUb6JyZ8z2yTbIZX+i1//uOxwid9FquirByWf90V +o2TcbfOh1JNaM+TzvhByLJSowTrRQyPHKr/GnMfOb2PpVPY19/yFDdVjEVTorx8O +ipI7eAMgJGdgzMtjW+npCNigqDDKpzxdorc4n8wPkK7Auum5CjEyiRkuOrwRs09i +3GXzrFvFn3MPx1XEbf80ShJbR2nv8V0gQ4lB7ngJRFOROdi3RwTHiqoXyhkVYwpX +N/7QMCRJWEiR/GmvizzRzzeEo59RnQ96PNqU2n0ppqThSujNjBB9ow7xV/vYrrIZ +R3jpoysuazs+nxK180IFEaiK/JERm4bhWwIDAQABo2cwZTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBRB2cs88xddN9xiHaa37MGeMUxX0TAfBgNVHSMEGDAWgBRB +2cs88xddN9xiHaa37MGeMUxX0TASBggrBgEFBQcNAwQGBARSb290MA0GCSqGSIb3 +DQEBCwUAA4IBAQByS7f9Iuw3oxchtxoMN7nk4e0gR8tFx97J88GPx5xT8+Q2KfEr +y0zUiXaVh3rShR7boe+JHoatqQqbPDNtqaVNeKKT/rE7GKR3IKbfSDVCuDbsKoU4 +hUmhTibmNjPIuRrzY6MmKitjEXdo/MLXOVCnG83LqHkgOs40gTyDtf436A0r/9ep +bJ7+M0ZrR4jhUPtCea74MgnE5tZKdZcIrHf2GLKKeccZLm+xcyH+cu/VWNxzYjxo +Jkosd/YLUArTXkEalnBsNyNK48YCaWid6UPTRvK41GNC7DFDpaP2Gft4hOU2DMzF +3UraQ096bQQbgoGHs7Z+qrb+y6MRahxwucX5 +-----END CERTIFICATE----- diff --git a/azure-qseow/server.pem b/azure-qseow/server.pem new file mode 100644 index 0000000..51db8a6 --- /dev/null +++ b/azure-qseow/server.pem @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFaDCCBFCgAwIBAgIQAMp2GECVXzu751Deuh2+BTANBgkqhkiG9w0BAQsFADAT +MREwDwYDVQQDDAhxc2Vvdy1DQTAeFw0yMTAyMDcyMDI3MzFaFw0zMTAyMTQyMDI3 +MzFaMCAxHjAcBgNVBAMMFXFzZW93LmpwcmRvbm5lbGx5LmNvbTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKCBD6F7bPKAb+Jt254Ro/SiKLfhdFqlHpCH +UZUlALPAKqd+EIdVSp/ECR4XP+i12gXUmn1qEy4qo8+uhZak2Z3DiSBQ9+HZMbz9 +wb2/z8rGYSrpdf0hioXbkTM0gyFYNb3HidMM8vj5U9Z0a1H50B3cC59lSqD/aClo +jsDUiEDpoTY/ArAhiZi29qYTIMA4GkMFXtcVfrdRKTbwZGi/ms3xnJF4tONZJtho +mLdjRSSYRGAW/DoXPGLTxgA+kklcR9bxn/MDDkZQ6U2mRCNJTYCM0LJusTKh8otN +jMrd9JMcxBgmMCalu7hrimMWg653Zm2c5B9Krz0+NlCflaJsRR0CAwEAAaOCAqkw +ggKlMCAGA1UdEQQZMBeCFXFzZW93LmpwcmRvbm5lbGx5LmNvbTAdBgNVHQ4EFgQU +Jjail6yUnZ1wBHz1QvrUba9ma4swHwYDVR0jBBgwFoAUQdnLPPMXXTfcYh2mt+zB +njFMV9EwFQYIKwYBBQUHDQMECQQHU2VydmljZTCCARIGCCsGAQUFBw0BBIIBBASC +AQBPxAZewfSS4ufGUZT1WCdJl3jNSGFjStPH+zvdqTyujAD/ikKPmEjcRcJ4BX9l +5lynQ1s0MYVmhKMQjC9Tdjpw8bS4vJffgZ3RVsD/1dsXY9LEL7f8wFip5TlEvxub +pcSvRwoXBf6lWwQWAu2c6hpSqDF+pAPGXtE/J9MftF0M/4AaEWAAEWZWKe1Vobnq +VLwGsKN7zFv5tYBEaYXl2aDGDDlaGgzbK6zZxs8Cn0eEIXaHGdl60b45aSrUVJKH +7LnDL6r9vjZ4EefqNPdIEVrvrvopUSpnxmqe6dvBJ0iQtxXPl2kJTN+j9wJbiZyc +WVmw3AUFpCml6KaDIB9wQIENMIIBEgYIKwYBBQUHDQIEggEEBIIBAANu8nkFzqsy +/Q87UNUmnuB3nqoRI6xCrn3j8soMVyurDexVi9Uu2gIlc94JD2YY6+uyy15wnftC +UzRlMz0c1xKePuIMXuSQcSwVPSYF5bDziMMIdTyCSotBuzeDisjHBerHbNd1qmQH +Xdp51/lCQq0sGpLlOyMphF5V3z0Z8hdTsKAMmZwQ3ACbRT1oWWrfojUlndkwueXZ +BkpvosHS8xLRzaIztwGgA1vPi1Y9kSZWcj9UeyJ5xsYiyE3rC7DHvAr9k5y1vVCR +1vyJXpmzz+OerIZZhI+cEXVgRC32/1j94GEtC8VrYYeNwpP+6RxnVm+CoTFf5e4O +kjWNL/9/l0UwDQYJKoZIhvcNAQELBQADggEBABUidvs/LvYX8oBK0aWHuy5UsVo8 +L0oMNKA7RLlBC5Yu2vjKFXOLYMKpN00YqQD9npC2hbhH2BVXmxWeIfxTNpG88gTR +g/9ddM+xi7UElnld4MRLiO4DGQ3Zf9OGwXJyJC2xyAd4bXgL+Z/hu0ObyBi3nzDi +U1RNSRpxhG6LwesvcmdRJxXnol6QpZwIW51IaW1uCfL9Q+1b6I0PweQ+KamjGQUF +SSo89wySi6H1Ggsz0dMbppqGFLg6Neveh5idFdko+f1Qh+gL8iFXzak37DeO6Joi +8CUJaSLwPFod2S7ikHqGk/RWoiU1yrkD3B01xd66YOtrf11/seaHfYOoKy0= +-----END CERTIFICATE----- diff --git a/azure-qseow/server_key.pem b/azure-qseow/server_key.pem new file mode 100644 index 0000000..96761b4 --- /dev/null +++ b/azure-qseow/server_key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAoIEPoXts8oBv4m3bnhGj9KIot+F0WqUekIdRlSUAs8Aqp34Q +h1VKn8QJHhc/6LXaBdSafWoTLiqjz66FlqTZncOJIFD34dkxvP3Bvb/PysZhKul1 +/SGKhduRMzSDIVg1vceJ0wzy+PlT1nRrUfnQHdwLn2VKoP9oKWiOwNSIQOmhNj8C +sCGJmLb2phMgwDgaQwVe1xV+t1EpNvBkaL+azfGckXi041km2GiYt2NFJJhEYBb8 +Ohc8YtPGAD6SSVxH1vGf8wMORlDpTaZEI0lNgIzQsm6xMqHyi02Myt30kxzEGCYw +JqW7uGuKYxaDrndmbZzkH0qvPT42UJ+VomxFHQIDAQABAoIBAQCWQTwIyCrtuh8D +siRujcUXNtc3jPAIC5vZYVSWctV9cOB9fB6tEsORXUvLx6gkillYK/eUgMED7xb7 +TT3yENFIR80PW70yyMkvS78bi31TLvO34GZ8WfH77di4PuijRpjI2QvFb9HmEkLR ++JqfW2XhDiYzSffbUD6KxT8eddg4KwMhprUDOUzmYHaYoBhUqry89a/eyUjH9iLF +2/nfHj2lZli8MIUU84waZSJrEevhZkllseMwd9SpWamniUypT67ro9pWxHnOvVXk +7ibEpzRYJSRvifrBOvhkPwqlgbVReyAbsb8vDU6vj8Iv+NlsS4WqW8s2yenBF+hc +kbpZzWphAoGBAMriQt9W+AvsJ1/EIuW0ljkfgY5MSxFYnHS3svSCD+1wPqOybcak +2HRfyZ6ocKLgWsx0g0kUl3zrjWJNXfavNtfXDWudHjeRadIsuvqaUs2yFZFUwjpn +StjUbox6OXMtzi6QaYQI0xiPtt6iwpVF+vyQ9VNxpXhIK+8gPwclNPJ3AoGBAMqG +aoj8XpmMdZCRqYaAFhtSxcFvadLxjdaHdPwFsmUDjajpr6C+Yh2ZkCKusRxtfXtX +hJMOr+U/mingqfqPg03nT7M9XRvKzebRDfRvTR6A0KgQIspmknICv7HADPoFmfO8 +muDsEO+daaf690JoMsQ7yOPA0XFC+d7SIiv3dXYLAoGAPcjFwKoFg+v42asrTXS/ +QsobdDA7tB6eFtVShC+PlilWihduYs4UtOvuxIhbNN7KB/V7faftsjcxqTwSX2tg +cj6lcZ45c4avCThiAKs6iDWxZ76+H3cRThLzT4hxMmhCn9+OoozlbFdnw0khpL/Y +/U1PyIeVcpnX90yEpTJpe2UCgYAtRNhhYE/g8JWCyBxllRHb76eGclnsLdQvhL2w +a7GRhLbQb9OzEXsq9J1UM0oheZPX0xsuJ9VHX+0cuTwlZpjJ/A9DmE7MnItjsYz1 ++z74t4BsYJb2OPE5DMY+fBgqdsAPzDOuXPX4KW5pft5v+IyIcniX+AyYzYi+tqeu +vjSCOwKBgBaJi8tpP3Xm0uPOdsiWY5uEDHg0xGDGzILhzCsrfZbaVfWEEaW8IbU2 +BQN4BpwmgVbNxKb4E1bIjFQT4K99TaM2NDzjW5azdf48kJjrwiAZSUaP0EXZuwd0 +6EG+eZM0sV1S4D2C48Q/DZxu+PukOKZk4bSHWDPfKdbPkqni+KEQ +-----END RSA PRIVATE KEY----- diff --git a/azure-qseow/win-4242.js b/azure-qseow/win-4242.js new file mode 100644 index 0000000..f2e92b5 --- /dev/null +++ b/azure-qseow/win-4242.js @@ -0,0 +1,32 @@ +// const https = require('https'); +const { http, https } = require('follow-redirects'); + +const fs = require('fs'); + +const options = { + hostname: 'central.browntown.local', + port: 4242, + path: '/qrs/about?xrfkey=abcdefghijklmnop', + method: 'GET', + // agent: 'Windows', + // login: 'INTERNAL\SA_API', + password: '', + headers: { + 'X-Qlik-Xrfkey' : 'abcdefghijklmnop', + 'X-Qlik-User' : `UserDirectory=${encodeURIComponent('INTERNAL')}; UserId=${encodeURIComponent('sa_api')}` + }, + key: fs.readFileSync("client_key.pem"), + cert: fs.readFileSync("client.pem"), + ca: fs.readFileSync("root.pem"), + rejectUnauthorized: false +}; + +https.get(options, function(res) { + console.log("Got response: " + res.statusCode); + res.on("data", function(chunk) { + console.log("BODY: " + chunk); + }); + }).on('error', function(e) { + console.log("Got error: " + e.message); +}); + diff --git a/azure-qseow/win-443.js b/azure-qseow/win-443.js new file mode 100644 index 0000000..820db00 --- /dev/null +++ b/azure-qseow/win-443.js @@ -0,0 +1,28 @@ + +// var https = require('https'); +var https = require('follow-redirects').https; +var fs = require('fs'); + +var options = { + hostname: '20.36.130.9', + port: 4243, + path: '/qrs/about?xrfkey=abcdefghijklmnop', + method: 'GET', + headers: { + 'X-Qlik-Xrfkey' : 'abcdefghijklmnop', + 'X-Qlik-User' : 'UserDirectory=Internal; UserId=sa_repository' + }, + key: fs.readFileSync("./client_key.pem"), + cert: fs.readFileSync("./client.pem"), + ca: fs.readFileSync("./root.pem"), + rejectUnauthorized: false +}; + +https.get(options, function(res) { + console.log("Got response: " + res.statusCode); + res.on("data", function(chunk) { + console.log("BODY: " + chunk); + }); + }).on('error', function(e) { + console.log("Got error: " + e.message); +}); diff --git a/azure-qseow/win-main.js b/azure-qseow/win-main.js new file mode 100644 index 0000000..efd9131 --- /dev/null +++ b/azure-qseow/win-main.js @@ -0,0 +1,33 @@ +// const https = require('https'); +const { http, https } = require('follow-redirects'); + +const fs = require('fs'); + +const options = { + hostname: 'qseow.jprdonnelly.com', + port: 443, + path: '/main/qrs/about?xrfkey=abcdefghijklmnop', + method: 'GET', + // agent: 'Windows', + // login: 'INTERNAL\SA_API', + // password: '', + headers: { + 'X-Qlik-Xrfkey' : 'abcdefghijklmnop', + 'X-Qlik-User' : 'UserDirectory=INTERNAL; UserId=sa_api' + // 'X-Qlik-User' : `UserDirectory=${encodeURIComponent('INTERNAL')}; UserId=${encodeURIComponent('sa_api')}` + }, + key: fs.readFileSync("client_key.pem"), + cert: fs.readFileSync("client.pem"), + ca: fs.readFileSync("root.pem"), + rejectUnauthorized: false +}; + +https.get(options, function(res) { + console.log("Got response: " + res.statusCode); + res.on("data", function(chunk) { + console.log("BODY: " + chunk); + }); + }).on('error', function(e) { + console.log("Got error: " + e.message); +}); + diff --git a/qseow-dev.code-workspace b/qseow-dev.code-workspace new file mode 100644 index 0000000..2b991f7 --- /dev/null +++ b/qseow-dev.code-workspace @@ -0,0 +1,11 @@ +{ + "folders": [ + { + "path": "." + }, + { + "path": "../sense-conductor" + } + ], + "settings": {} +} \ No newline at end of file diff --git a/vault-testing/client.pem b/vault-testing/client.pem new file mode 100644 index 0000000..02b3819 --- /dev/null +++ b/vault-testing/client.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIQAIB5hhFvreUNHfHljwkEwTANBgkqhkiG9w0BAQsFADAV +MRMwEQYDVQQDDApjZW50cmFsLUNBMB4XDTIxMDIwNzE3MDUxNloXDTMxMDIxNDE3 +MDUxNlowFTETMBEGA1UEAwwKUWxpa0NsaWVudDCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAMC5D8WvsgNFnB3NUCKxqX+3xn8X971y4pX600HampPDq+bJ +5yJQsDo0LcfGDl4XZvvDNFB2GFxrYef3S5xHp9QSWhj3dll0k0rAl0ITbKkQNHhF +L3meDd0d0DCshcCmEia0vRryYLVtUCBm00tyiWPLIC925XqYBp85B38quD0gLaaM +c79R/LUoqjf4589pIowFfYjzB/NK1qbERNhtu0W+FH/5+eh8WNlsJ/dfs0h0dC5/ +n0/qPBl15qh40AWb9zUiQd1BUBdrhVm6bSD0zOjEDbuCAjr7Dk9QnsUl3wVpjIEK +aP6JVln0En4fzEfPgfiJjeO69xfXe1gG8HVtXJ0CAwEAAaNYMFYwHQYDVR0OBBYE +FHPiw6xQnTxXBQJKw4ovSrLIZ55XMB8GA1UdIwQYMBaAFLXVWapk7qSadaPJG+SA +mgbDwwqsMBQGCCsGAQUFBw0DBAgEBkNsaWVudDANBgkqhkiG9w0BAQsFAAOCAQEA +L1ndp+V+MBb8oMpmDEen5fzwO0U9t7kLe6tShFGvpYvVV6W4BnsaEHi9ebD5SbBK +MLmN63B8mACDxJp4esXiZcSj2phTLOdOEm3/TWtLB0YBiKhDQRIrSyI/9Uxfk3NW +YY/htDe0Xe1CRBUJvFD03a15+BkXAoALuYBBku0gveeJUXkDuVe/UNzVdLd3Z/1B +cdieROmUWK/I1JJyjDPEvGbPJ9EBI37Iop6tPDBasHSEmGHmFVZj5+rSiGFJOGJn +whiMV3mOdHyL+peqyj7Q8Uv72RgW0QLRBdssYcQWuQcEcuozCz0ARYTQk7CNHwsF +iXP+k9NziyFT8sdE8ccd7w== +-----END CERTIFICATE----- diff --git a/vault-testing/client_key.pem b/vault-testing/client_key.pem new file mode 100644 index 0000000..e94662c --- /dev/null +++ b/vault-testing/client_key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAwLkPxa+yA0WcHc1QIrGpf7fGfxf3vXLilfrTQdqak8Or5snn +IlCwOjQtx8YOXhdm+8M0UHYYXGth5/dLnEen1BJaGPd2WXSTSsCXQhNsqRA0eEUv +eZ4N3R3QMKyFwKYSJrS9GvJgtW1QIGbTS3KJY8sgL3blepgGnzkHfyq4PSAtpoxz +v1H8tSiqN/jnz2kijAV9iPMH80rWpsRE2G27Rb4Uf/n56HxY2Wwn91+zSHR0Ln+f +T+o8GXXmqHjQBZv3NSJB3UFQF2uFWbptIPTM6MQNu4ICOvsOT1CexSXfBWmMgQpo +/olWWfQSfh/MR8+B+ImN47r3F9d7WAbwdW1cnQIDAQABAoIBAQCGhWZl9XJK6F7F +Spdh8CLA3FU4R1GMslFIoNCvCdiVxaIKsOmdwTaRGfTOmgdTVAB1QVcVxqjQcb/g +O3RSfI2/8KNlA+5fGIjrR60M2SQiigYl4Rz3RgSlT/cO0o114DWRQN0ynvY0DT49 +r6hS5HrT5mfr2ZDqVo1gvFzoPbhmKQVrQv9l1Owb+ZI1zzzvOE5pBkWv+vU3mLJ5 +XzsDGC87MQj9l6iSh/HU1zQQ0VgTJ8hB3NL7vRZMYn6zyzpaDdRyerysGfJZtWfd +Q4Z/ANIv67LHch5FWJBA5iOPiZZFqPdPaptfbaGO+CFk8M55YAS0QY4zBD8YxBxt +qo379k79AoGBAPOhh5dR1Ox6MEiInATDnrqLCuamJWwiAU+KMDqrKnIi9FNSfQd5 +F16PGI5/kmbnc6jLftDdLBgeWU+BoAqRtXoOUt7NXp62jkjy0c9lmo1wAEhvS3Fj ++csp2VCgadmx+0QXN5b0gMbznHRx7pXptASslVw1VlTQ6XWEfIyFoKIDAoGBAMqB +4UVXYx6bkClppeFNlZRvpXMnDSFm+0UCKmoHAu1WsoSbJ2nErxB1T6NLe6fI/NXr +vFINRXUZ8rgInFTCeeQamRuxsRXVM0CmwQS7uFj/ZOTK4+TkjeoydsKE5NGGla45 +P6Voswy39xSH4/FZIStPbA6wuWe07aWPoVv7SBTfAoGBAKE47oqTi4zmGxeU13JL +pbmak58oqbESG73wG5RnetJHEVomRzjvyCg6F60M/Ov+FErKR2SeSDS5uK5lgGwe +GnLoEa0BSLFM64GYtoFBonIggP9uLwWdfEsWqYmybfmyzy0zFAVgTevagFmKn7Ez +E37YWorHfRbpnOS4xNcVAsTTAoGALaw/X4FHFLcnO3/dbsQt0U2g9ii/mGH+l+DW +KhWsvlTIbIoFyKAYj9C1hnHW0M/O3nyNe8AMg0235XPjtmYqUZ0CHTHla7QrHBDA +Bc5E1KW9XrC3138I1uJM0LBiXzNIfQPia+8COwMe0d2YNm3QwlDmYSXQmyg+VRHg +5br11ecCgYAm2CL6kXV9YF2WPxtqgXexkM/DtechRZTEMNKilUtylIF3+MzsWp4C +zvRBE2vwLZOHd9E7r7WYHnTA9MWEvy1d6pVvlain4oNSnmii5kTs75XM0aSzkduC +QwBy2+ufKAZ3+DxrVFWRHt4vNgXjdrQadDTuHOItAvsFXTwM8X4yIw== +-----END RSA PRIVATE KEY----- diff --git a/vault-testing/default.aspx b/vault-testing/default.aspx new file mode 100644 index 0000000..f6fd346 --- /dev/null +++ b/vault-testing/default.aspx @@ -0,0 +1,338 @@ + + + + + Login Required + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + +
+Skip to main content + + + + + + + + + + + +
+
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + +
 
+
+ + + + + + + + + +
+

Sign in / Create New Account

+
+

Access valuable data, pay invoices, subscribe to our publications, manage your account and much more!

+
+
+ + + +
Login
Uncheck if on a public computer
+ + + +
+ + + + + + + + +
+ +
+

 

+
+
+
+
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+ + + +
+ +
+
+ISPA +
+
+

+

 

+
+
+
+
+
+
+
+
+ + + +
+ diff --git a/vault-testing/fort_certificate.crt b/vault-testing/fort_certificate.crt new file mode 100644 index 0000000..68260a5 --- /dev/null +++ b/vault-testing/fort_certificate.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFOjCCAyKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJDQTEL +MAkGA1UECBMCT04xDzANBgNVBAcTBk90dGF3YTEYMBYGA1UEChMPUWxpayBQcml2 +YXRlIENBMB4XDTIxMDExMDAyMzIzN1oXDTI2MDEwOTAyMzIzN1owRTELMAkGA1UE +BhMCQ0ExCzAJBgNVBAgTAk9OMQ8wDQYDVQQHEwZPdHRhd2ExGDAWBgNVBAoTD1Fs +aWsgUHJpdmF0ZSBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQt +eC1n06S6YhT51OEpJlsGrBzehPgZYaq3y0N6K0yQNPYJlyyyyTBzZtROWpWornha +H2ImTSRlSO4pPgxhLO3g5AwzFK0dAhL1GHN33RoX+V4cHJC21uiRmG+hiuKHKOTK +6PgPAR77zxPPx6Cp974i9Xuu93XowBkCb3OzlAAEPnP3B5SzUasSIUwVfWJ4fYFK +zBgbc21xR0+x4avdV79XIU7/wVAXkjnkZXQ2fxrJY3yfiskAdniDqOXUs+rFE725 +IdmeWkH//ktCQ2RoGJ5cuc6Uh3msUugpxYSPxm8+KKrwmpwajp7kcMzZW63r/qGT +g6wh/gLbEOBRHgeKtHjcUdKDB0xn77xxYLtdOCQlqLnuukgM+aHMPQiSWKfB8xrE +GuJwMYNrRgbMTX9ZEIcK+A+OADyHxmUV3abVPO04UkjGCnE4TQssLnzg6bIKp0GX +g1SUlIfQswotXjR/Fpi5sFM0DWAegTZw9Mvyv1GbP8h6L6PNlN+jLj7cmm4kYEKL +NniW/tgihh8oPAHV/8MdMly5FtACPtu2WeNLvPT+7857ACaM+bwvrJSABahe+FQ6 +ngyHLYGDHVa+J48SbEVBo13QtHEO/ZMMGP4TFtTJp4uo7lLTP6U6j/lllTlVLuNY +rMZ7TltAx1Gj3gki71ftHuxEdUw3Y14EO1UqlPqJAgMBAAGjNTAzMA4GA1UdDwEB +/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMA0GCSqG +SIb3DQEBCwUAA4ICAQCm5AhVoTShucCCXg2cbqEzd+dFkEki50HWDES25Xlx1iN3 +akUGiaat93NsGcrG8/M8eel2fBEz7jPJDb3l62b4GuM62fzkqxc0p6UgnOa8JaOL +gX2RZhZb/ik1u1gnUvvzuDsESx0elRHE13xPk9MtnJo3yMsMcTeDLpa+N0PKIwGz +Ei3CQFCIdr3qZOlsr2RsjSXZ6d3FR9hLDBiLNI+bqaiJEMyszupPdXPPMV2dyWX1 +XCR8vwKRbDHLlE3X03qRXp+xhbENAmfDfJa96yHBl8zpNYBkYNh9YAV2Tg24cnF4 +WbMAeChbl8m31F5UafbfmITMpO28V+jjbScwM/tHGhiwnbvyOlfjH31YEfYJKyPF +IJYFhV+W6nxlRxIz8QPENRo3euTG6T4iCb9NSlIb35yLMkwmBncodPpdys2J8oaw +g0B44ZgOLhUqOMA+YTR04GuuN6jBRoezwITupMtiSz0Mn7PwIu4OfVY8vB8D4fTd +R38tJ5fbFcLrEk6bQk+Jnh5CY6xwkMcYWi5avTH6VnHq5zQDnMJrLt+RiG+H17vp +ncT2Q2/IS75gx6cTlR0Dg2DjwsHM3YZYYQId3lbVfmH6yxBw3RnCKFIRjaCretmk +U6ztAQ/jMYjZ9DJIDc/whrInADeLCw5DWs6K4QXjSMnYd9PAlpf+lu8Tw98y1A== +-----END CERTIFICATE----- diff --git a/vault-testing/fort_private.key b/vault-testing/fort_private.key new file mode 100644 index 0000000..58adda2 --- /dev/null +++ b/vault-testing/fort_private.key @@ -0,0 +1,51 @@ +-----BEGIN PRIVATE KEY----- +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 +-----END PRIVATE KEY----- diff --git a/vault-testing/fs1.js b/vault-testing/fs1.js new file mode 100644 index 0000000..3b68ac7 --- /dev/null +++ b/vault-testing/fs1.js @@ -0,0 +1,72 @@ +/***** 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 +} \ No newline at end of file diff --git a/vault-testing/index.html b/vault-testing/index.html new file mode 100644 index 0000000..3d8cbd2 --- /dev/null +++ b/vault-testing/index.html @@ -0,0 +1,10 @@ + + + +Simple web app +
Loading...
+
Loading...
+ + + + \ No newline at end of file diff --git a/vault-testing/index.js b/vault-testing/index.js new file mode 100644 index 0000000..c4a3421 --- /dev/null +++ b/vault-testing/index.js @@ -0,0 +1,20 @@ +/***** 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"); +}); diff --git a/vault-testing/jwt.js b/vault-testing/jwt.js new file mode 100644 index 0000000..fa5432d --- /dev/null +++ b/vault-testing/jwt.js @@ -0,0 +1,59 @@ +const fs = require('fs'); +const jwt = require('jsonwebtoken'); +const { http, https } = require('follow-redirects'); + +// Your Sense Enterprise installation hostname: +const senseHost = 'qseow.jprdonnelly.com'; + +// Your configured virtual proxy prefix for JWT authentication: +const proxyPrefix = 'jwt'; + +// The Sense Enterprise-configured user directory for the user you want to identify +// as: +const userDirectory = 'INTERNAL'; + +// The user to use when creating the session: +const userId = 'sa_api'; + +// The Sense Enterprise-configured JWT structure. Change the attributes to match +// your configuration: +const token = { + directory: userDirectory, + user: userId, +}; + +// Path to the private key used for JWT signing: +const privateKeyPath = './fort_private.key'; +const key = fs.readFileSync(path.resolve(__dirname, privateKeyPath)); + +// Sign the token using the RS256 algorithm: +const signedToken = jwt.sign(token, key, { algorithm: 'RS256' }); + +const options = { + hostname: 'central.browntown.local', + port: 4243, + path: '/qrs/about?xrfkey=abcdefghijklmnop', + method: 'GET', + // agent: 'Windows', + // login: 'INTERNAL\SA_API', + password: '', + headers: { + 'X-Qlik-Xrfkey' : 'abcdefghijklmnop', + 'X-Qlik-User' : `UserDirectory=${encodeURIComponent('INTERNAL')}; UserId=${encodeURIComponent('sa_api')}`, + 'Authorization' : 'Bearer ${signedToken}'} + }, + // key: fs.readFileSync("client_key.pem"), + // cert: fs.readFileSync("client.pem"), + // ca: fs.readFileSync("root.pem"), + // rejectUnauthorized: false +}; + +https.get(options, function(res) { + console.log("Got response: " + res.statusCode); + res.on("data", function(chunk) { + console.log("BODY: " + chunk); + }); + }).on('error', function(e) { + con + sole.log("Got error: " + e.message); +}); diff --git a/vault-testing/root.cer b/vault-testing/root.cer new file mode 100644 index 0000000..d694a74 Binary files /dev/null and b/vault-testing/root.cer differ diff --git a/vault-testing/root.pem b/vault-testing/root.pem new file mode 100644 index 0000000..6dffdf2 --- /dev/null +++ b/vault-testing/root.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDGzCCAgOgAwIBAgIQAKqc00Zx4AfvKdtqjSsWbTANBgkqhkiG9w0BAQsFADAV +MRMwEQYDVQQDDApjZW50cmFsLUNBMB4XDTIwMTIzMDE1NDIwNFoXDTMxMDEwNjE1 +NDIwNFowFTETMBEGA1UEAwwKY2VudHJhbC1DQTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAJ/6pWC/0N1fOMc/4/AWYEAuV+mokmlstBBjsczscoGGV/dl +F0am/M7QzFKYJE7ypzIIGob/i96m9+oc1bG5i5l9UFMknSonVag6sBjmKd+B5aG9 +VuZ3JNCu1dVaXQ5pHf7kmXGfOAhWMhjf6BxLjRDh6T6ZvyEx4ZL+ofarggtllpAI +O91vpNWixN7qgcYT0ahs8d8QwMkDrZRMcOPWSlp6XpLE+reM1MI1GAFctRBeGW7K +SefasF/OMw3i4NGhGy0vju78In23AZTtu69j2xhZM98fWXoPV5tdC8kFMjm+INxn +ZNCXWjjsIB5+etGKTiMtDTEs6C/zn/CVpTMnO00CAwEAAaNnMGUwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUtdVZqmTupJp1o8kb5ICaBsPDCqwwHwYDVR0jBBgw +FoAUtdVZqmTupJp1o8kb5ICaBsPDCqwwEgYIKwYBBQUHDQMEBgQEUm9vdDANBgkq +hkiG9w0BAQsFAAOCAQEAJSFhaGQW2UoICwjmIDW63UqVXrLOH9VoeBHko4SAuCv5 +9ambUZ+ccdFqkVfUnRdudFYq4fwBkJp2O9fDNnmVjMleSTGUJt09arAs69Hlze9y +LsOmWTqWkuxMwXfzMl2CP2LNVjxFIiNDOvGFtUEMIQriCIf0ESNmdqQlBSd8Ebcd +8NTQb8yc1h6f5vw9dmo18myFQio9nKbMJP7ADumbmCSOVPAcQZItcscMY05IkeYs +B3EfA/hb9y1lqBj3BLVQ8upZQQWxCuzFFJukpmNKJ28Xb6Bxvdzzkfce9Y3dFrtZ +qwYhIxzkb1A1sqjP32VecqA7HsxLfv6nt3GBEAZoXQ== +-----END CERTIFICATE----- diff --git a/vault-testing/server.pem b/vault-testing/server.pem new file mode 100644 index 0000000..6ce9274 --- /dev/null +++ b/vault-testing/server.pem @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFajCCBFKgAwIBAgIQAL2xxPBwLS0l55gsSyxQXzANBgkqhkiG9w0BAQsFADAV +MRMwEQYDVQQDDApjZW50cmFsLUNBMB4XDTIxMDIwNzE3MDUxNloXDTMxMDIxNDE3 +MDUxNlowIDEeMBwGA1UEAwwVcXNlb3cuanByZG9ubmVsbHkuY29tMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAksBbEhm9tpnBR1laE234ZN9KKjDtUgZb +h58UJ2v4b0tsvI58ctSRs7wzrKhkNoDu22vh1IyiC5mowbF9jPnTg9aOOhbXN9vQ +/Cj/IpIfeTk9dJwNV9ALxKmyq5ENSPeePk82pPSvm9nfz4/2p46rL98LKruQCA2G +cRpuk+8I5SETA8yxsKa0vwmXHTCw/Lft4vOdq50GOUxTVkPfyzfZKV7iMAkOGnOw +p/eWPRKG+CGITDup8Bbv7GRvUQkTD/4rcSytk7kpoqNIAbYyTDX+rTidBIZNZ8bj +lfxY3CqXPO0vNREMMh/8m3EsOzjSZbgDAqWgjBW5fed3MY6mcJO75wIDAQABo4IC +qTCCAqUwIAYDVR0RBBkwF4IVcXNlb3cuanByZG9ubmVsbHkuY29tMB0GA1UdDgQW +BBQI/P4vL6JlRJvtu1U5E1p5N2+PDTAfBgNVHSMEGDAWgBS11VmqZO6kmnWjyRvk +gJoGw8MKrDAVBggrBgEFBQcNAwQJBAdTZXJ2aWNlMIIBEgYIKwYBBQUHDQEEggEE +BIIBAIXwDWHHErd/uPNqw/TSLyRX/AMEngic34OqFjx6VNx9rwDatR55XEh4n7gy +wVB4bU9BoI3AChX3nMNMio5YXPiY13PLWt+mhOzvGTROUQUfyIp/+kD/Aa0ICFK8 +WJe564sJGOHUP3dasbNUOA1na/eHV4VWCyz5V7gJ7V1bRXjtiJckyh9Z4vM2elTM +2QeBVR+nb+sDwL3noz0lp9OuE95nMH/vs3Dk9SCVT8V/5bXsHRyg3UmBtY+bjlnz +0Y8C90+1BRk8+rnsW8sPQU+Xs+uYXTrw3AnNbuaesVGS7hwtvZparkpIZ4zJG5sW +hbt73Q9x8mY02+/3IhN3T1jiduQwggESBggrBgEFBQcNAgSCAQQEggEAVJQMpCDf +cefsm11ufw3GRv2DmeSLnWT3eJ3UV5tRAsJ9U8S8mf7FlqeVmiXL2YX9hPQf/+RP +GEk+6Sx+vfmnjsSEhOEBDwnsePMM9ZnvA/H2xufsio9m7uTapsFWPFUNt3JbKror +R0OdQzsgE0aTpkDP02ojpS5LmCuD/jMEkcrbbSkksRDYjohuIKZRERDijpw9WDhM +1CyW6MJmaxwdOqLqeakt1FLqHbBEYEy9JowTzaNLbOt14ohJ3XsVn8Kf2Yxc69yQ +28BBEKH2p34G82op/mP37kuGjdh5oMEnWbHdRNSGxzRJkjn+7N08tfneiTxzszd7 +0ZoHI++3bgTopTANBgkqhkiG9w0BAQsFAAOCAQEAb83XLFmREAfCWfH+w23peo7s +lsUkayVRsBWC6KnvxqtEWdqKNR6PbvwZQp6ue0ENUt6Of14Qlfumm74CnS9oxusT +q2S1a31GnPfYq3ItMKDvETjibe0DT14JkmkqtJQe4FgdvdOoXZEKvLtZqlv1Xf0l +dDu2EAtTSnae6mSqvulaWo23qH7iyj15dp2SdWKjfLlv86iLdHUmXV/NkiZ/HTRZ +4R2IowAd9oUrqGdbunVBy6teyEmvIQiiJHK126Daijih88/TIKK79MK2Tl2UYP+S +dPZKrhEwlGpmY29rfGt6uAXb0WChkfkghc9NlpCQUk4PY6KAzkcxCqUUiLWOgA== +-----END CERTIFICATE----- diff --git a/vault-testing/server_key.pem b/vault-testing/server_key.pem new file mode 100644 index 0000000..b1a4b70 --- /dev/null +++ b/vault-testing/server_key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAksBbEhm9tpnBR1laE234ZN9KKjDtUgZbh58UJ2v4b0tsvI58 +ctSRs7wzrKhkNoDu22vh1IyiC5mowbF9jPnTg9aOOhbXN9vQ/Cj/IpIfeTk9dJwN +V9ALxKmyq5ENSPeePk82pPSvm9nfz4/2p46rL98LKruQCA2GcRpuk+8I5SETA8yx +sKa0vwmXHTCw/Lft4vOdq50GOUxTVkPfyzfZKV7iMAkOGnOwp/eWPRKG+CGITDup +8Bbv7GRvUQkTD/4rcSytk7kpoqNIAbYyTDX+rTidBIZNZ8bjlfxY3CqXPO0vNREM +Mh/8m3EsOzjSZbgDAqWgjBW5fed3MY6mcJO75wIDAQABAoIBAQCJp9wFj5XQikuu +BNeksBw3auijyP9kWMhU4FjEXdhNdZ/LA5EjGdiOk3SZed9+7NShiIHuofiDDyEo +h7hwnAvXeFQzkydQo2ZWkpI4uH7DdHj8QEGX5HSVhmUt4ENo9bU/V4i3lTqA5A+4 +IJ/LLt3PataLwCLsGtvIjnW5WJisbDitqLD09SfEoHzCpN7cCDjYJrXDykP64MQK +ERCrMz1yoMThbv1Q7J8gPEm4AsN5NLKdky1zd+xbjy7WljMWTTNHLAoUWhkc9D+1 +7WtcTZYQnE+9lo8gb1MVxwlglyruW0Ch+SZhXhQQGuy5OYWd6fRhq+B8aybovWCg +7GlJo85JAoGBAONFtIIEiFoKbEZtwCJ0FkLbwVvsWMB/dMHdy/45Cwb8/0xC9WHi +sPfM9LKNe4Q6E/mlVSotdsOHQocvVVgiGoBrVBWOn6olK+oF155VXyWwaFFE4KTR +zHiDGioodeFFgZ1x9kM9q9U9TwZr/Knt0lI1JzQTKFp82NEYgkjInt7DAoGBAKVN +FAHCH0rcfaCgcQEhn4lWYMjrBVNq5Gtq/xFWqMwzyPCvn/kXTvzhPlbMWcTByrIx +bS9KeMNk/zdu6pAUq5KV0A9laBBWJ2F5Cg1RK91DcmTNKtV3+Pq6n/2F8TQOEryY +Wcj9fyVOPQMkIaYacaSceH9NVS5y65rQxcv9JSQNAoGBAIIrSletgOsRTTKJaaJS +Gu3wL68Wjz6xwY3IGy5gPZCjFxX2w9Rsoi9LlFsv7a6uFQLHTx/5KiyTK+eBlMAF +yGgFEQPHzGsHHz/KWNS20OglQZpKeN/tyc68SCAdTGbaCILE4udgSyq3Eqv67Zvm +OrAbAXkx/8rT9trLztMhFN1BAoGAMwXQqB5IVG4spNkBKI09VkIAS+QnV7FF4lY7 +dxmdrrJJUumS4mssaWgJOveGufHrZAdXoWJGVmGlWXH2GxUWRH/Tofz2GxzMuQyI +asXkWT7JX43oq82FX7cdTT77zcqORAJurFh614QH1yFe9YtyCpJ1qy2unlDAop/Q +ff+caD0CgYBRbFBtGZLc3DhufolHswF9zAlbg+Ro+m2YA0FaK5tnxqOC60NlRRgG +QyJtmBL2Lo3gOp1/icHAgMI1aVqho6+7r2bAWS2EFCbxfzWMoYdwoi3d7KuNFOYd +/sskoTGj0iQAR7VCzjJyakKvhuTJhiP1YnMEoxjwSyGhBT85RC6Tbw== +-----END RSA PRIVATE KEY----- diff --git a/vault-testing/ticket.js b/vault-testing/ticket.js new file mode 100644 index 0000000..560cab0 --- /dev/null +++ b/vault-testing/ticket.js @@ -0,0 +1,72 @@ +/***** 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 +} diff --git a/vault-testing/win-4242.js b/vault-testing/win-4242.js new file mode 100644 index 0000000..f2e92b5 --- /dev/null +++ b/vault-testing/win-4242.js @@ -0,0 +1,32 @@ +// const https = require('https'); +const { http, https } = require('follow-redirects'); + +const fs = require('fs'); + +const options = { + hostname: 'central.browntown.local', + port: 4242, + path: '/qrs/about?xrfkey=abcdefghijklmnop', + method: 'GET', + // agent: 'Windows', + // login: 'INTERNAL\SA_API', + password: '', + headers: { + 'X-Qlik-Xrfkey' : 'abcdefghijklmnop', + 'X-Qlik-User' : `UserDirectory=${encodeURIComponent('INTERNAL')}; UserId=${encodeURIComponent('sa_api')}` + }, + key: fs.readFileSync("client_key.pem"), + cert: fs.readFileSync("client.pem"), + ca: fs.readFileSync("root.pem"), + rejectUnauthorized: false +}; + +https.get(options, function(res) { + console.log("Got response: " + res.statusCode); + res.on("data", function(chunk) { + console.log("BODY: " + chunk); + }); + }).on('error', function(e) { + console.log("Got error: " + e.message); +}); + diff --git a/vault-testing/win-443.js b/vault-testing/win-443.js new file mode 100644 index 0000000..5e77b2c --- /dev/null +++ b/vault-testing/win-443.js @@ -0,0 +1,28 @@ + +// var https = require('https'); +var https = require('follow-redirects').https; +var fs = require('fs'); + +var options = { + hostname: 'qseow.jprdonnelly.com', + port: 443, + path: 'main/qrs/about?xrfkey=abcdefghijklmnop', + method: 'GET', + headers: { + 'X-Qlik-Xrfkey' : 'abcdefghijklmnop', + 'X-Qlik-User' : 'UserDirectory=Internal; UserId=sa_repository' + }, + key: fs.readFileSync("./client_key.pem"), + cert: fs.readFileSync("./client.pem"), + ca: fs.readFileSync("./root.pem"), + rejectUnauthorized: false +}; + +https.get(options, function(res) { + console.log("Got response: " + res.statusCode); + res.on("data", function(chunk) { + console.log("BODY: " + chunk); + }); + }).on('error', function(e) { + console.log("Got error: " + e.message); +}); diff --git a/vault-testing/win-main.js b/vault-testing/win-main.js new file mode 100644 index 0000000..efd9131 --- /dev/null +++ b/vault-testing/win-main.js @@ -0,0 +1,33 @@ +// const https = require('https'); +const { http, https } = require('follow-redirects'); + +const fs = require('fs'); + +const options = { + hostname: 'qseow.jprdonnelly.com', + port: 443, + path: '/main/qrs/about?xrfkey=abcdefghijklmnop', + method: 'GET', + // agent: 'Windows', + // login: 'INTERNAL\SA_API', + // password: '', + headers: { + 'X-Qlik-Xrfkey' : 'abcdefghijklmnop', + 'X-Qlik-User' : 'UserDirectory=INTERNAL; UserId=sa_api' + // 'X-Qlik-User' : `UserDirectory=${encodeURIComponent('INTERNAL')}; UserId=${encodeURIComponent('sa_api')}` + }, + key: fs.readFileSync("client_key.pem"), + cert: fs.readFileSync("client.pem"), + ca: fs.readFileSync("root.pem"), + rejectUnauthorized: false +}; + +https.get(options, function(res) { + console.log("Got response: " + res.statusCode); + res.on("data", function(chunk) { + console.log("BODY: " + chunk); + }); + }).on('error', function(e) { + console.log("Got error: " + e.message); +}); +