From 0299e5f661fc5d1b90076c61b56203f556f9cc7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Tue, 22 Oct 2019 15:04:28 +0200 Subject: [PATCH] Fixed some small bugs, now sharing session between Express and Socket.io. --- server/package.json | 5 +---- server/server.js | 54 +++++++++++++++++++-------------------------- 2 files changed, 24 insertions(+), 35 deletions(-) diff --git a/server/package.json b/server/package.json index 0a98b10..ab5c911 100644 --- a/server/package.json +++ b/server/package.json @@ -11,16 +11,13 @@ "base-64": "^0.1.0", "colors": "^1.1.2", "compression": "^1.7.3", - "connect-redis": "^4.0.3", - "cookie-parser": "^1.4.4", "debug": "^4.1.0", "express": "^4.16.3", "express-session": "^1.16.1", + "express-socket.io-session": "^1.3.5", "mediasoup": "^3.0.12", "openid-client": "^2.5.0", "passport": "^0.4.0", - "passport.socketio": "^3.7.0", - "redis": "^2.8.0", "socket.io": "^2.1.1", "spdy": "^4.0.0" }, diff --git a/server/server.js b/server/server.js index 3dffd3c..057b8b2 100755 --- a/server/server.js +++ b/server/server.js @@ -19,19 +19,19 @@ const base64 = require('base-64'); // auth const passport = require('passport'); const { Issuer, Strategy } = require('openid-client'); -const session = require('express-session'); -const passportSocketIo = require('passport.socketio'); -const cookieParser = require('cookie-parser'); -// Session storage -const redis = require('redis'); -const RedisStore = require('connect-redis')(session); -const redisClient = redis.createClient(); +const session = require('express-session')({ + secret : config.cookieSecret, + resave : true, + saveUninitialized : true, + cookie : { secure: true } +}); +const sharedSession = require('express-socket.io-session'); /* eslint-disable no-console */ console.log('- process.env.DEBUG:', process.env.DEBUG); console.log('- config.mediasoup.logLevel:', config.mediasoup.logLevel); console.log('- config.mediasoup.logTags:', config.mediasoup.logTags); -/* eslint-enable no-console */ +/* eslint-enable nopassportSocketIo-console */ const logger = new Logger(); @@ -55,9 +55,10 @@ const tls = key : fs.readFileSync(config.tls.key) }; -const sessionStore = new RedisStore({ client: redisClient }); - const app = express(); + +app.use(session); + let httpsServer; let oidcClient; let oidcStrategy; @@ -76,13 +77,13 @@ const auth = config.auth; async function run() { - if ( + if ( typeof(auth) !== 'undefined' && typeof(auth.issuerURL) !== 'undefined' && typeof(auth.clientOptions) !== 'undefined' ) { - Issuer.discover(auth.issuerURL).then( async (oidcIssuer) => + Issuer.discover(auth.issuerURL).then(async (oidcIssuer) => { // Setup authentication await setupAuth(oidcIssuer); @@ -96,10 +97,10 @@ async function run() // Run WebSocketServer. await runWebSocketServer(); }) - .catch((err) => - { - logger.error(err); - }); + .catch((err) => + { + logger.error(err); + }); } else { @@ -206,18 +207,10 @@ async function setupAuth(oidcIssuer) passport.use('oidc', oidcStrategy); - app.use(session({ - secret : config.cookieSecret, - resave : true, - saveUninitialized : true, - store : sessionStore, - cookie : { secure: true } - })); - app.use(passport.initialize()); app.use(passport.session()); - // login + // loginparams app.get('/auth/login', (req, res, next) => { passport.authenticate('oidc', { @@ -328,12 +321,11 @@ async function runWebSocketServer() { const io = require('socket.io')(httpsServer); - io.use(passportSocketIo.authorize({ - secret : config.cookieSecret, - passport : passport, - cookieParser : cookieParser, - store : sessionStore, - })); + io.use( + sharedSession(session, { + autoSave: true + }) + ); // Handle connections from clients. io.on('connection', (socket) =>