No tengo idea de cómo finalizar la sesión, por lo que cuando un usuario realiza una solicitud a mi punto final /logout, la sesión se borra y se les solicita que inicien sesión usando SSO nuevamente.
Aquí está mi código... hasta ahora, una vez que inicio sesión inicialmente, no importa lo que haga, sigo conectado y no tengo que ingresar credenciales a través de mi proveedor de autenticación.
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) => { req.logout() req.session.destroy((err) => { 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')))