diff --git a/lib/interpolate.js b/lib/interpolate.js index aa58543..dcb4afc 100644 --- a/lib/interpolate.js +++ b/lib/interpolate.js @@ -1,3 +1,5 @@ +var utils = require('./utils'); + function getProp(obj, path) { return path.split('.').reduce(function (prev, curr) { return prev[curr]; @@ -5,12 +7,7 @@ function getProp(obj, path) { } function escape (html){ - return String(html) - .replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&') - .replace(//g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"'); + return utils.escape(html).replace(/'/g, ''') } module.exports = function (tmpl) { diff --git a/lib/wsfed.js b/lib/wsfed.js index 174a82a..72aeaa8 100644 --- a/lib/wsfed.js +++ b/lib/wsfed.js @@ -91,9 +91,8 @@ module.exports = function(options) { encryptionCert: options.encryptionCert }, function(err, assertion) { if (err) return next(err); - var escapedWctx = utils.escape(utils.escape(ctx)); // we need an escaped value for RequestSecurityTokenResponse.Context - var escapedAssertion = utils.escape(assertion); // we need an escaped value for RequestSecurityTokenResponse.Context - assertion = '' + escapedAssertion + ''; + var escapedWctx = utils.escape(ctx); + assertion = '' + assertion + ''; return renderResponse(res, postUrl, ctx, assertion); }); diff --git a/package.json b/package.json index f2cc004..fb68843 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wsfed", - "version": "3.1.4", + "version": "3.2.0", "description": "WSFed server middleware", "main": "lib/index.js", "scripts": { @@ -18,9 +18,9 @@ "author": "Auth0", "license": "mit", "dependencies": { - "ejs": "~0.8.3", + "ejs": "2.5.5", "jsonwebtoken": "~5.0.4", - "saml": "^0.9.3", + "saml": "0.11.0", "thumbprint": "0.0.1" }, "devDependencies": { @@ -29,10 +29,10 @@ "mocha": "~1.8.1", "request": "~2.14.0", "xmldom": "=0.1.15", - "cheerio": "~0.10.7", + "cheerio": "0.22.0", "xml-crypto": "~0.0.20", "xpath": "0.0.5", "xtend": "~2.0.3", - "xml-encryption": "~0.7.2" + "xml-encryption": "0.11.0" } } diff --git a/test/wsfed-encryption.tests.js b/test/wsfed-encryption.tests.js index 9cfdc18..077ebe9 100644 --- a/test/wsfed-encryption.tests.js +++ b/test/wsfed-encryption.tests.js @@ -38,7 +38,7 @@ describe('when dwdw encrypting the assertion', function () { if(err) return done(err); body = b; $ = cheerio.load(body); - var wresult = $('input[name="wresult"]').attr('value'); + var wresult = $('input[name="wresult"]').attr('value'); encryptedAssertion = /(.*)<\/t:RequestedSecurityToken>/.exec(wresult)[1]; done(); }); @@ -54,6 +54,7 @@ describe('when dwdw encrypting the assertion', function () { it('should contain a valid encrypted xml with the assertion', function(done){ xmlenc.decrypt(encryptedAssertion, { key: credentials.key }, function(err, decrypted) { + var isValid = xmlhelper.verifySignature(decrypted, credentials.cert); expect(isValid).to.be.ok;