feat(handler): local logout redirects back to preconfigured URL

This commit is contained in:
Trong Huu Nguyen
2023-04-21 15:21:02 +02:00
parent c308efb3ef
commit 0ba124809a
2 changed files with 8 additions and 2 deletions

View File

@@ -248,7 +248,6 @@ func (s *Standalone) logout(w http.ResponseWriter, r *http.Request, globalLogout
}
logger.Info("logout: successful local logout")
metrics.ObserveLogout(metrics.LogoutOperationLocal)
}
cookie.Clear(w, cookie.Session, s.GetCookieOptions(r))
@@ -257,6 +256,12 @@ func (s *Standalone) logout(w http.ResponseWriter, r *http.Request, globalLogout
logger.Debug("logout: redirecting to identity provider for global/single-logout")
metrics.ObserveLogout(metrics.LogoutOperationSelfInitiated)
http.Redirect(w, r, logout.SingleLogoutURL(idToken), http.StatusTemporaryRedirect)
} else {
redirect := s.Client.LogoutCallback(r).PostLogoutRedirectURI()
logger.Debugf("logout: redirecting to %s", redirect)
metrics.ObserveLogout(metrics.LogoutOperationLocal)
http.Redirect(w, r, redirect, http.StatusTemporaryRedirect)
}
}

View File

@@ -537,7 +537,8 @@ func localLogout(t *testing.T, rpClient *http.Client, idp *mock.IdentityProvider
assert.NoError(t, err)
resp := get(t, rpClient, logoutURL.String())
assert.Equal(t, http.StatusOK, resp.StatusCode)
assert.Equal(t, http.StatusTemporaryRedirect, resp.StatusCode)
assert.Equal(t, idp.Cfg.OpenID.PostLogoutRedirectURI, resp.Location.String())
cookies := rpClient.Jar.Cookies(logoutURL)
sessionCookie := getCookieFromJar(cookie.Session, cookies)