Skip to content

Commit f47c444

Browse files
authored
Return header with error idp logout (#3346)
1 parent 1aeb4cc commit f47c444

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

api/user_logout.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,13 @@ import (
2020
"context"
2121
"encoding/base64"
2222
"encoding/json"
23+
"fmt"
2324
"net/http"
2425
"net/url"
2526
"time"
2627

28+
"github.com/go-openapi/errors"
29+
2730
"github.com/go-openapi/runtime"
2831
"github.com/go-openapi/runtime/middleware"
2932
"github.com/minio/console/api/operations"
@@ -37,10 +40,13 @@ func registerLogoutHandlers(api *operations.ConsoleAPI) {
3740
api.AuthLogoutHandler = authApi.LogoutHandlerFunc(func(params authApi.LogoutParams, session *models.Principal) middleware.Responder {
3841
err := getLogoutResponse(session, params)
3942
if err != nil {
40-
api.Logger("IDP logout failed: %v", err.APIError)
43+
api.Logger("IDP logout failed: %v", err.APIError.DetailedMessage)
4144
}
4245
// Custom response writer to expire the session cookies
4346
return middleware.ResponderFunc(func(w http.ResponseWriter, p runtime.Producer) {
47+
if err != nil {
48+
w.Header().Set("IDP-Logout", fmt.Sprintf("%v", err.APIError.DetailedMessage))
49+
}
4450
expiredCookie := ExpireSessionCookie()
4551
// this will tell the browser to clear the cookie and invalidate user session
4652
// additionally we are deleting the cookie from the client side
@@ -104,10 +110,14 @@ func logoutFromIDPProvider(r *http.Request, state string) error {
104110
client := &http.Client{
105111
Transport: GlobalTransport,
106112
}
107-
_, err := client.PostForm(providerCfg.EndSessionEndpoint, params)
113+
result, err := client.PostForm(providerCfg.EndSessionEndpoint, params)
108114
if err != nil {
109-
return err
115+
return errors.New(500, "failed to logout: %v", err.Error())
116+
}
117+
if result.StatusCode != 204 {
118+
return errors.New(int32(result.StatusCode), "failed to logout")
110119
}
111120
}
121+
112122
return nil
113123
}

0 commit comments

Comments
 (0)