diff --git a/src/oidc.js b/src/oidc.js index 85fcd4419..bc568078d 100644 --- a/src/oidc.js +++ b/src/oidc.js @@ -167,7 +167,7 @@ class CloudronAdapter { } } -async function getProvider() { +async function getProvider(routePrefix) { const { Provider } = await import('oidc-provider'); const configuration = { @@ -180,6 +180,11 @@ async function getProvider() { }; }, adapter: CloudronAdapter, + interactions: { + url: async function(ctx, interaction) { + return `${routePrefix}/interaction/${interaction.uid}`; + } + } clients: [{ client_id: 'foo', client_secret: 'bar', @@ -198,8 +203,8 @@ async function getProvider() { return provider; } -async function getMiddleware() { - const provider = await getProvider(); +async function getMiddleware(routePrefix) { + const provider = await getProvider(routePrefix); return provider.callback(); } diff --git a/src/server.js b/src/server.js index ce29abc06..33dd8c021 100644 --- a/src/server.js +++ b/src/server.js @@ -369,7 +369,7 @@ async function initializeExpressSync() { // well known router.get ('/well-known-handler/*', routes.wellknown.get); - app.use('/api/v1/oidc', await oidc.getMiddleware()); + app.use('/api/v1/oidc', await oidc.getMiddleware('/api/v1/oidc')); // disable server socket "idle" timeout. we use the timeout middleware to handle timeouts on a route level // we rely on nginx for timeouts on the TCP level (see client_header_timeout)