Не удается завершить сеанс для единого входа поставщика аутентификации (узел JS)

#javascript #node.js #express #passport.js #openid-connect

#язык JavaScript #node.js #экспресс #passport.js #openid-подключение

Вопрос:

Я понятия не имею, как завершить сеанс, поэтому, когда пользователь делает запрос на мою конечную точку /выхода из системы, сеанс очищается, и им необходимо снова войти в систему с помощью единого входа.

Вот мой код… до сих пор, как только я войду в систему изначально, что бы я ни делал, я остаюсь в системе и мне не нужно вводить учетные данные через моего поставщика аутентификации.

 let OpenIDConnectStrategy = require('passport-ci-oidc').IDaaSOIDCStrategy const passport = require("passport")  app.use(session({ resave: 'false', saveUninitialized: 'false', secret: 'keyboard cat', cookie: false })); app.use(passport.initialize()); app.use(passport.session());  passport.serializeUser(function (user, done) {  done(null, user); });  passport.deserializeUser(function (obj, done) {  done(null, obj); });  var Strategy = new OpenIDConnectStrategy({  discoveryURL: discovery_url,  clientID: client_id,  scope: 'openid',  response_type: 'code',  clientSecret: client_secret,  callbackURL: callback_url,  skipUserProfile: true,  addCACert: true,  CACertPathList: [  '/src/server/DigiCertGlobalRootCA.crt',  '/src/server/DigiCertSHA2SecureServerCA.crt'  ] },  function (iss, sub, profile, accessToken, refreshToken, params, done) {  process.nextTick(function () {  profile.accessToken = accessToken;  profile.refreshToken = refreshToken;  done(null, profile);  })  });  passport.use(Strategy);  app.get('/login', passport.authenticate('openidconnect', {}));  function ensureAuthenticated(req, res, next) {  if (!req.isAuthenticated()) {  req.session.originalUrl = req.originalUrl;  res.redirect('/login');  } else {  return next();  } }  app.get('/auth/sso/redirect', function (req, res, next) {  var redirect_url = req.session.originalUrl;  passport.authenticate('openidconnect', {  successRedirect: redirect_url,  failureRedirect: '/failure'  })(req, res, next); });  app.get('/failure', function (req, res) {  res.redirect('/login') });  app.get('/logout', ((req, res) =gt; {  req.logout()  req.session.destroy((err) =gt; {  res.clearCookie('connect.sid')  res.send('logged out')  }) }))  app.get('/', ensureAuthenticated, function (req, res, next) {  next() });  // serve React application  app.use(express.static(path.join(__dirname, '../../build')))