Skip to content

Commit a45b1da

Browse files
committed
Fix OAuth session and proxy configuration
- Add trust proxy setting for reverse proxy support - Save session before redirect to ensure state persistence - Fixes state mismatch and rate limiter errors
1 parent ad96943 commit a45b1da

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

backend/src/routes/auth.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,16 @@ router.get('/login', authRateLimiter, (req: Request, res: Response) => {
1212
req.session.codeVerifier = codeVerifier;
1313
req.session.state = state;
1414

15-
logger.info('Redirecting to Keycloak for authentication');
15+
// Save session before redirect to ensure state is persisted
16+
req.session.save((err) => {
17+
if (err) {
18+
logger.error('Failed to save session', { error: err });
19+
return res.status(500).json({ error: 'Failed to initiate login' });
20+
}
1621

17-
res.redirect(url);
22+
logger.info('Redirecting to Keycloak for authentication');
23+
res.redirect(url);
24+
});
1825
} catch (error) {
1926
logger.error('Error in login route', { error });
2027
res.status(500).json({ error: 'Failed to initiate login' });

backend/src/server.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ async function startServer() {
7171
const sessionStore = await createSessionStore();
7272
const sessionMiddleware = createSessionMiddleware(sessionStore);
7373

74+
// Trust proxy - required when behind reverse proxy (Traefik/nginx)
75+
app.set('trust proxy', true);
76+
7477
app.use(helmetMiddleware);
7578
app.use(corsMiddleware);
7679
app.use(compressionMiddleware);

0 commit comments

Comments
 (0)