mirror of
https://github.com/lukaszraczylo/traefikoidc.git
synced 2026-10-12 04:04:26 +00:00
Another attempt to fix the issue with expired session.
This commit is contained in:
+5
-3
@@ -137,15 +137,17 @@ func (t *TraefikOidc) handleExpiredToken(rw http.ResponseWriter, req *http.Reque
|
|||||||
func (t *TraefikOidc) handleCallback(rw http.ResponseWriter, req *http.Request) (bool, string) {
|
func (t *TraefikOidc) handleCallback(rw http.ResponseWriter, req *http.Request) (bool, string) {
|
||||||
session, err := t.store.Get(req, cookieName)
|
session, err := t.store.Get(req, cookieName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handleError(rw, "Session error", http.StatusInternalServerError, t.logger)
|
t.logger.Errorf("Session error: %v", err)
|
||||||
|
t.initiateAuthentication(rw, req, session, t.redirectURL)
|
||||||
return false, ""
|
return false, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
callbackState := req.URL.Query().Get("state")
|
callbackState := req.URL.Query().Get("state")
|
||||||
sessionState, ok := session.Values["csrf"].(string)
|
sessionState, ok := session.Values["csrf"].(string)
|
||||||
if !ok || callbackState != sessionState {
|
if !ok || callbackState != sessionState {
|
||||||
handleError(rw, "Invalid state parameter", http.StatusBadRequest, t.logger)
|
t.logger.Debug("Invalid state parameter. Session might have expired.")
|
||||||
return false, "invalid-state-param"
|
t.initiateAuthentication(rw, req, session, t.redirectURL)
|
||||||
|
return false, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
code := req.URL.Query().Get("code")
|
code := req.URL.Query().Get("code")
|
||||||
|
|||||||
@@ -275,12 +275,7 @@ func (t *TraefikOidc) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
|||||||
|
|
||||||
authenticated, needsRefresh, expired := t.isUserAuthenticated(session)
|
authenticated, needsRefresh, expired := t.isUserAuthenticated(session)
|
||||||
|
|
||||||
if expired {
|
if expired || !authenticated {
|
||||||
t.handleExpiredToken(rw, req, session)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if !authenticated {
|
|
||||||
t.initiateAuthentication(rw, req, session, t.redirectURL)
|
t.initiateAuthentication(rw, req, session, t.redirectURL)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -288,7 +283,7 @@ func (t *TraefikOidc) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
|||||||
if needsRefresh {
|
if needsRefresh {
|
||||||
refreshed := t.refreshToken(rw, req, session)
|
refreshed := t.refreshToken(rw, req, session)
|
||||||
if !refreshed {
|
if !refreshed {
|
||||||
t.handleExpiredToken(rw, req, session)
|
t.initiateAuthentication(rw, req, session, t.redirectURL)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user