Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 由于回调url,Passport saml注销不起作用_Node.js_Express_Single Sign On_Passport.js_Passport Saml - Fatal编程技术网

Node.js 由于回调url,Passport saml注销不起作用

Node.js 由于回调url,Passport saml注销不起作用,node.js,express,single-sign-on,passport.js,passport-saml,Node.js,Express,Single Sign On,Passport.js,Passport Saml,我正在使用passport saml从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

我正在使用passport saml从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调用,因为重定向到注销URL停止了我的SLO进程,所以我进行了更改并部署到dev env上,出现了以下异常:

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

有线的事情是,仍然重定向我到logoutCallbackPath url

问题在于passport没有更新sp元数据,因为generateServiceProviderMetadata(decryptionCert,signingCert)方法中存在一些问题。所以我更新了证书,并想出了如何重新生成它