R55: blacklist session tokens on user logout

This commit is contained in:
2026-08-13 15:34:17 +01:00
parent 4c5991f8e6
commit ac2fdfe09d
2 changed files with 71 additions and 0 deletions
+12
View File
@@ -380,6 +380,8 @@ func (t *TraefikOidc) handleLogout(rw http.ResponseWriter, req *http.Request) {
}
idToken := session.GetIDToken()
accessToken := session.GetAccessToken()
refreshToken := session.GetRefreshToken()
if err := session.Clear(req, rw); err != nil {
t.logger.Errorf("Error clearing session: %v", err)
@@ -387,6 +389,16 @@ func (t *TraefikOidc) handleLogout(rw http.ResponseWriter, req *http.Request) {
return
}
// Blacklist the session's tokens so a token captured before logout (e.g. a
// bearer mode access token) cannot be reused until its natural expiry.
// RevokeToken is a no-op-safe local blacklist (guards nil) and skips
// empty values.
for _, tok := range []string{accessToken, idToken, refreshToken} {
if tok != "" {
t.RevokeToken(tok)
}
}
host := utils.DetermineHost(req)
scheme := utils.DetermineScheme(req, t.forceHTTPS)
baseURL := fmt.Sprintf("%s://%s", scheme, host)