Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
@okta/oidc-middleware
Advanced tools
This package makes it easy to get your users logged in with Okta using OpenId Connect (OIDC).
npm install @okta/oidc-middleware
This module makes it easy to get users logged in to your Express app.
This integration depends on sessions to store user information. Ensure the express-session middleware is added before you add ExpressOIDC
.
const express = require('express');
const session = require('express-session');
const { ExpressOIDC } = require('@okta/oidc-middleware');
const app = express();
app.use(session({ /* options */ })); // ensure this is before ExpressOIDC
const oidc = new ExpressOIDC({ /* options */ });
app.use(oidc.router);
oidc.on('ready', () => {
app.listen(3000, () => console.log('app started'));
});
oidc.on('error', err => {
// An error occurred while setting up OIDC
})
By default, the session middleware uses a MemoryStore, which is not designed for production use. Use another session store for production.
Configures your OIDC integration.
const { ExpressOIDC } = require('@okta/oidc-middleware');
const oidc = new ExpressOIDC({
issuer: YOUR_ISSUER,
client_id: YOUR_CLIENT_ID,
client_secret: YOUR_CLIENT_SECRET,
redirect_uri: YOUR_REDIRECT_URI
});
Required config:
https://YOUR_ORG.oktapreview.com/oauth2/default
)http://localhost:3000/authorization-code/callback
. When deployed, this should be https://YOUR_PROD_DOMAIN/authorization-code/callback
.Optional config:
code
openid
This should be added to your express app to attach the login and callback routes:
const { ExpressOIDC } = require('@okta/oidc-middleware');
const express = require('express');
const app = express();
const oidc = new ExpressOIDC({ /* options */ });
app.use(oidc.router);
It's required in order for ensureAuthenticated
and isAuthenticated
to work and adds the following routes:
/login
- redirects to the Okta sign-in page by default/authorization-code/callback
- processes the OIDC response, then attaches userinfo to the sessionThe middleware must retrieve some information about your client before starting the server. You must wait until ExpressOIDC is ready to start your server.
oidc.on('ready', () => {
app.listen(3000, () => console.log('app started'));
});
This is triggered if an error occurs while ExpressOIDC is trying to start.
oidc.on('error', err => {
// An error occurred while setting up OIDC
});
Use this to protect your routes. If not authenticated, this will redirect to the login route. If not authenticated and the protected route should not return html, this will return a 401 instead.
app.get('/protected', oidc.ensureAuthenticated(), (req, res) => {
res.send('Protected stuff');
});
** redirectTo ** - the path to return to after login
This allows you to determine if a user is authenticated.
app.get('/', (req, res) => {
if (req.isAuthenticated()) {
res.send('Logged in');
} else {
res.send('Not logged in');
}
});
This allows you to end the session.
app.get('/logout', (req, res) => {
req.logout();
res.redirect('/');
});
This provides information about the authenticated user.
app.get('/', (req, res) => {
if (req.userinfo) {
res.send(`Hi ${req.userinfo.sub}!`);
} else {
res.send('Hi!');
}
});
If you need to modify the default login and callback routes, the routes
config option is available.
const oidc = new ExpressOIDC({
{ /* options */ }
routes: {
login: {
path: '/different/login'
},
callback: {
path: '/different/callback',
handler: (req, res, next) => {
// my customer async handler
},
// this is where we'll redirect if we don't have a route to return to
defaultRedirect: '/home'
}
}
});
To add additional data about a user from your database, we recommend adding middleware to extend req
.
const { ExpressOIDC } = require('@okta/oidc-middleware');
const express = require('express');
const session = require('express-session');
const app = express();
app.use(session({ /* options */ }));
const oidc = new ExpressOIDC({ /* options */ });
app.use(oidc.router);
function addUserContext(req, res, next) {
if (!req.userinfo) return next();
// request additional info from your database
User.findOne({ id: req.userinfo.sub }, (err, user) => {
if (err) return next(err);
req.user = user;
next();
});
}
app.use(addUserContext);
{ /* options */ } // add other routes
oidc.on('ready', () => app.listen(3000));
oidc.on('error', err => console.log('could not start', err));
FAQs
OpenId Connect middleware for authorization code flows
The npm package @okta/oidc-middleware receives a total of 8,894 weekly downloads. As such, @okta/oidc-middleware popularity was classified as popular.
We found that @okta/oidc-middleware demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.