mirror of
https://github.com/lukaszraczylo/traefikoidc.git
synced 2026-10-16 04:29:15 +00:00
R55: blacklist session tokens on user logout
This commit is contained in:
+12
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user