Fixed some small bugs, now sharing session between Express and Socket.io.
parent
4181afd1a3
commit
0299e5f661
|
|
@ -11,16 +11,13 @@
|
||||||
"base-64": "^0.1.0",
|
"base-64": "^0.1.0",
|
||||||
"colors": "^1.1.2",
|
"colors": "^1.1.2",
|
||||||
"compression": "^1.7.3",
|
"compression": "^1.7.3",
|
||||||
"connect-redis": "^4.0.3",
|
|
||||||
"cookie-parser": "^1.4.4",
|
|
||||||
"debug": "^4.1.0",
|
"debug": "^4.1.0",
|
||||||
"express": "^4.16.3",
|
"express": "^4.16.3",
|
||||||
"express-session": "^1.16.1",
|
"express-session": "^1.16.1",
|
||||||
|
"express-socket.io-session": "^1.3.5",
|
||||||
"mediasoup": "^3.0.12",
|
"mediasoup": "^3.0.12",
|
||||||
"openid-client": "^2.5.0",
|
"openid-client": "^2.5.0",
|
||||||
"passport": "^0.4.0",
|
"passport": "^0.4.0",
|
||||||
"passport.socketio": "^3.7.0",
|
|
||||||
"redis": "^2.8.0",
|
|
||||||
"socket.io": "^2.1.1",
|
"socket.io": "^2.1.1",
|
||||||
"spdy": "^4.0.0"
|
"spdy": "^4.0.0"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -19,19 +19,19 @@ const base64 = require('base-64');
|
||||||
// auth
|
// auth
|
||||||
const passport = require('passport');
|
const passport = require('passport');
|
||||||
const { Issuer, Strategy } = require('openid-client');
|
const { Issuer, Strategy } = require('openid-client');
|
||||||
const session = require('express-session');
|
const session = require('express-session')({
|
||||||
const passportSocketIo = require('passport.socketio');
|
secret : config.cookieSecret,
|
||||||
const cookieParser = require('cookie-parser');
|
resave : true,
|
||||||
// Session storage
|
saveUninitialized : true,
|
||||||
const redis = require('redis');
|
cookie : { secure: true }
|
||||||
const RedisStore = require('connect-redis')(session);
|
});
|
||||||
const redisClient = redis.createClient();
|
const sharedSession = require('express-socket.io-session');
|
||||||
|
|
||||||
/* eslint-disable no-console */
|
/* eslint-disable no-console */
|
||||||
console.log('- process.env.DEBUG:', process.env.DEBUG);
|
console.log('- process.env.DEBUG:', process.env.DEBUG);
|
||||||
console.log('- config.mediasoup.logLevel:', config.mediasoup.logLevel);
|
console.log('- config.mediasoup.logLevel:', config.mediasoup.logLevel);
|
||||||
console.log('- config.mediasoup.logTags:', config.mediasoup.logTags);
|
console.log('- config.mediasoup.logTags:', config.mediasoup.logTags);
|
||||||
/* eslint-enable no-console */
|
/* eslint-enable nopassportSocketIo-console */
|
||||||
|
|
||||||
const logger = new Logger();
|
const logger = new Logger();
|
||||||
|
|
||||||
|
|
@ -55,9 +55,10 @@ const tls =
|
||||||
key : fs.readFileSync(config.tls.key)
|
key : fs.readFileSync(config.tls.key)
|
||||||
};
|
};
|
||||||
|
|
||||||
const sessionStore = new RedisStore({ client: redisClient });
|
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
|
app.use(session);
|
||||||
|
|
||||||
let httpsServer;
|
let httpsServer;
|
||||||
let oidcClient;
|
let oidcClient;
|
||||||
let oidcStrategy;
|
let oidcStrategy;
|
||||||
|
|
@ -206,18 +207,10 @@ async function setupAuth(oidcIssuer)
|
||||||
|
|
||||||
passport.use('oidc', oidcStrategy);
|
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.initialize());
|
||||||
app.use(passport.session());
|
app.use(passport.session());
|
||||||
|
|
||||||
// login
|
// loginparams
|
||||||
app.get('/auth/login', (req, res, next) =>
|
app.get('/auth/login', (req, res, next) =>
|
||||||
{
|
{
|
||||||
passport.authenticate('oidc', {
|
passport.authenticate('oidc', {
|
||||||
|
|
@ -328,12 +321,11 @@ async function runWebSocketServer()
|
||||||
{
|
{
|
||||||
const io = require('socket.io')(httpsServer);
|
const io = require('socket.io')(httpsServer);
|
||||||
|
|
||||||
io.use(passportSocketIo.authorize({
|
io.use(
|
||||||
secret : config.cookieSecret,
|
sharedSession(session, {
|
||||||
passport : passport,
|
autoSave: true
|
||||||
cookieParser : cookieParser,
|
})
|
||||||
store : sessionStore,
|
);
|
||||||
}));
|
|
||||||
|
|
||||||
// Handle connections from clients.
|
// Handle connections from clients.
|
||||||
io.on('connection', (socket) =>
|
io.on('connection', (socket) =>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue