I am seeing following error from time to time. It works sometimes and app starts, but most of the times I see this error within 2-3 seconds of starting the app.
Unable to configure ExpressOIDC { RequestError: Request timed out
at timeoutFn (.../node_modules/got/index.js:285:53)
at asPromise (.../node_modules/got/index.js:355:18)
at got (.../node_modules/got/index.js:578:10)
at Function.got.(anonymous function) [as get] (.../node_modules/got/index.js:596:31)
at Object.get (.../node_modules/openid-client/lib/http.js:15:14)
at Function.discover (.../node_modules/openid-client/lib/issuer.js:192:28)
at Object.oidcUtil.createClient.context [as createClient] (.../node_modules/@okta/oidc-middleware/src/oidcUtil.js:30:17)
at new ExpressOIDC (.../node_modules/@okta/oidc-middleware/src/ExpressOIDC.js:109:14)
at Object.<anonymous> (.../src/app.js:20:14)
at Module._compile (module.js:660:30)
at loader (.../node_modules/babel-register/lib/node.js:144:5)
at Object.require.extensions.(anonymous function) [as .js] (.../node_modules/babel-register/lib/node.js:154:7)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
at Module.require (module.js:604:17)
name: 'RequestError',
code: 'ETIMEDOUT',
host: '<DOMAIN>.oktapreview.com',
hostname: '<DOMAIN>.oktapreview.com',
method: 'GET',
path: '/oauth2/default/.well-known/openid-configuration',
protocol: 'https:',
url: 'https://<DOMAIN>.oktapreview.com/oauth2/default/.well-known/openid-configuration' }
import express from 'express';
import session from 'express-session';
import {ExpressOIDC} from '@okta/oidc-middleware';
import {APP_SECRET, PORT} from './config/appConfig';
const app = express();
app.use(session({
secret: APP_SECRET,
resave: true,
saveUninitialized: false,
}));
const oidc = new ExpressOIDC({
issuer: 'https://<DOMAIN>.oktapreview.com/oauth2/default',
client_id: '<CLIENT_ID>',
client_secret: '<CLIENT_SECRET>',
redirect_uri: 'http://localhost:3000/authorization-code/callback',
scope: 'openid profile',
});
app.use(oidc.router);
app.get('/', (req, res) => {
if (req.userinfo) {
console.log(req.userinfo);
res.send(`Hello ${req.userinfo.name}! <a href="logout">Logout</a>`);
} else {
res.send('Please <a href="/login">login</a>');
}
});
app.get('/protected', oidc.ensureAuthenticated(), (req, res) => {
res.send('Top Secret');
});
app.get('/logout', (req, res) => {
req.logout();
res.redirect('/');
});
oidc.on('ready', () => {
app.listen(PORT, () => console.log('App Started'));
});
oidc.on('error', (err) => {
console.log('Unable to configure ExpressOIDC', err);
});