mirror of
https://github.com/lukaszraczylo/traefikoidc.git
synced 2026-10-17 04:37:48 +00:00
Quite important fix
When user session expires, reauthentication fails as CSRF token disappears. This commit fixes the issue by initiating new authentication flow.
This commit is contained in:
+10
-2
@@ -128,11 +128,19 @@ func (t *TraefikOidc) getNewTokenWithRefreshToken(refreshToken string) (*TokenRe
|
|||||||
// handleExpiredToken manages token expiration by clearing the session
|
// handleExpiredToken manages token expiration by clearing the session
|
||||||
// and initiating a new authentication flow.
|
// and initiating a new authentication flow.
|
||||||
func (t *TraefikOidc) handleExpiredToken(rw http.ResponseWriter, req *http.Request, session *SessionData, redirectURL string) {
|
func (t *TraefikOidc) handleExpiredToken(rw http.ResponseWriter, req *http.Request, session *SessionData, redirectURL string) {
|
||||||
if err := session.Clear(req, rw); err != nil {
|
// Clear authentication data but preserve CSRF state
|
||||||
t.logger.Errorf("Failed to clear session: %v", err)
|
session.SetAuthenticated(false)
|
||||||
|
session.SetAccessToken("")
|
||||||
|
session.SetRefreshToken("")
|
||||||
|
session.SetEmail("")
|
||||||
|
|
||||||
|
// Save the cleared session state
|
||||||
|
if err := session.Save(req, rw); err != nil {
|
||||||
|
t.logger.Errorf("Failed to save cleared session: %v", err)
|
||||||
http.Error(rw, "Internal Server Error", http.StatusInternalServerError)
|
http.Error(rw, "Internal Server Error", http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
t.defaultInitiateAuthentication(rw, req, session, redirectURL)
|
t.defaultInitiateAuthentication(rw, req, session, redirectURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user