app.get('/samlp', function(req, res, next) { samlp.auth(xtend({}, { issuer: 'urn:fixture-test', getPostURL: getPostURL, cert: credentials.cert, key: credentials.key }, module.exports.options))(req, res); });
app.post(IDP_PATHS.SIGN_IN, function(req, res) { const authOptions = extend({}, req.idp.options); Object.keys(req.body).forEach(function(key) { var buffer; if (key === '_authnRequest') { buffer = new Buffer(req.body[key], 'base64'); req.authnRequest = JSON.parse(buffer.toString('utf8')); // Apply AuthnRequest Params authOptions.inResponseTo = req.authnRequest.id; if (req.idp.options.allowRequestAcsUrl && req.authnRequest.acsUrl) { authOptions.acsUrl = req.authnRequest.acsUrl; authOptions.recipient = req.authnRequest.acsUrl; authOptions.destination = req.authnRequest.acsUrl; authOptions.forceAuthn = req.authnRequest.forceAuthn; } if (req.authnRequest.relayState) { authOptions.RelayState = req.authnRequest.relayState; } } else { req.user[key] = req.body[key]; } }); if (!authOptions.encryptAssertion) { delete authOptions.encryptionCert; delete authOptions.encryptionPublicKey; } // Set Session Index authOptions.sessionIndex = getSessionIndex(req); // Keep calm and Single Sign On console.log(dedent(chalk` Generating SAML Response using => {bold User} => ${Object.entries(req.user).map(([key, value]) => chalk` ${key}: {cyan ${value}}` ).join('')} {bold SAMLP Options} => ${Object.entries(authOptions).map(([key, value]) => chalk` ${key}: {cyan ${formatOptionValue(key, value)}}` ).join('')} `)); samlp.auth(authOptions)(req, res); })
app.post(['/', '/idp'], function(req, res, next) { var authOptions = extend({}, req.idp.options); if (req.body.SAMLRequest) { showUser(req, res, next); } else { // Form POST Object.keys(req.body).forEach(function(key) { var buffer; if (key === '_authnRequest') { buffer = new Buffer(req.body[key], 'base64'); req.authnRequest = JSON.parse(buffer.toString('utf8')); // Apply AuthnRequest Params authOptions.inResponseTo = req.authnRequest.id; if (req.idp.options.allowRequestAcsUrl && req.authnRequest.acsUrl) { authOptions.acsUrl = req.authnRequest.acsUrl; authOptions.recipient = req.authnRequest.acsUrl; authOptions.destination = req.authnRequest.acsUrl; authOptions.forceAuthn = req.authnRequest.forceAuthn; } if (req.authnRequest.relayState) { authOptions.RelayState = req.authnRequest.relayState; } } else { req.user[key] = req.body[key]; } }); if (!authOptions.encryptAssertion) { delete authOptions.encryptionCert; delete authOptions.encryptionPublicKey; } // Keep calm and Single Sign On console.log('Sending Assertion with Options => \n', authOptions); samlp.auth(authOptions)(req, res); } });