From 0ba124809ad2a3e7399e4e734101572f0ac51282 Mon Sep 17 00:00:00 2001 From: Trong Huu Nguyen Date: Fri, 21 Apr 2023 15:21:02 +0200 Subject: [PATCH] feat(handler): local logout redirects back to preconfigured URL --- pkg/handler/handler.go | 7 ++++++- pkg/handler/handler_test.go | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/handler/handler.go b/pkg/handler/handler.go index 6813b2c..9d12d3d 100644 --- a/pkg/handler/handler.go +++ b/pkg/handler/handler.go @@ -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) } } diff --git a/pkg/handler/handler_test.go b/pkg/handler/handler_test.go index 529a5d6..9df4c17 100644 --- a/pkg/handler/handler_test.go +++ b/pkg/handler/handler_test.go @@ -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)