Выход из паспорта saml не работает из-за URL обратного вызова - PullRequest
0 голосов
/ 29 января 2020

Я использую sambl для паспорта для выхода из IDP. Вот мой код:

    module.exports = function logout(app, samlStrategy, config) {
  app.get('/logout', (req, res) => {


    const { webUser } = req;
    const { role, nameID } = webUser || {};

    if (role === ROLENAME_WEB_USER && nameID) {
      samlStrategy.logout(req, (err, requestUrl) => {
        // redirect to the IdP with the SAML logout request
        console.log(`req url is is:${requestUrl}`);
        res.redirect(requestUrl);
      });
    } else {
      res.redirect(LOGGED_OUT_URL);
    }
  });

  app.post(config.externalSSO.logoutCallbackPath, (req, res) => {
    // console.log('SAML logout callback:');
    // console.log(req);
    res.redirect(LOGGED_OUT_URL);
  });
};

А вот мой конфиг saml для паспорта:

loginPath: process.env.EXTERNAL_SSO_LOGIN_PATH,
callbackUrl: process.env.BASE_ADDRESS + process.env.EXTERNAL_SSO_CALLBACK_PATH,
callbackPath: process.env.EXTERNAL_SSO_CALLBACK_PATH,
logoutUrl: process.env.EXTERNAL_SSO_LOGOUT_URL,
// logoutCallbackPath: '/logout/external/callback',
logoutCallbackUrl: process.env.EXTERNAL_SSO_LOGOUT_URL,
metadataPath: `${process.env.EXTERNAL_SSO_LOGIN_PATH}/metadata`,
entryPoint: process.env.EXTERNAL_SSO_ENTRYPOINT,
issuer: process.env.EXTERNAL_SSO_ISSUER,
idpPublicCert: process.env.EXTERNAL_SSO_IDP_CERT,
spPrivateCert: process.env.EXTERNAL_SSO_SP_SIGNING_PRIVATE_KEY,
decryptionPvk: process.env.EXTERNAL_SSO_SP_DECRYPTION_PRIVATE_KEY,
decryptionCert: process.env.EXTERNAL_SSO_SP_DECRYPTION_PUBLIC_KEY,
authnRequestBinding: process.env.EXTERNAL_SSO_AUTHN_REQUEST_BINDING,

Проблема в том, что я пытался избавиться от второго вызова API в приведенном выше коде, потому что это перенаправление на LOGGED_OUT_URL остановило мой процесс SLO, поэтому я изменился и развернул на dev env, и я получил это исключение:

 {"error":{"message":"Not found"}}

проводная вещь заключается в том, что все еще перенаправить меня на выход CallCallPath URL!

1 Ответ

0 голосов
/ 02 февраля 2020

Проблема заключалась в том, что в паспорте не обновлялись метаданные sp из-за проблем с методом generateServiceProviderMetadata (decryptionCert, signatureCert). Поэтому я обновил сертификаты и выяснил, как его заново сгенерировать.

...