fix(auth): handle saml logout and xml encryption padding

This commit is contained in:
mac
2026-07-17 09:42:12 +08:00
parent 157f0c65cb
commit b151356045
7 changed files with 112 additions and 12 deletions
+21 -1
View File
@@ -75,7 +75,10 @@ func (h *SAMLHandler) Logout(c *gin.Context) {
Expires: expired,
})
}
c.JSON(http.StatusOK, gin.H{"ok": true})
c.JSON(http.StatusOK, gin.H{
"ok": true,
"logout_url": h.logoutURL(),
})
}
func (h *SAMLHandler) ACS(c *gin.Context) {
@@ -125,3 +128,20 @@ func ssoRedirectURL(relayState, token string) string {
parsed.RawQuery = values.Encode()
return parsed.String()
}
func (h *SAMLHandler) logoutURL() string {
logoutURL := strings.TrimSpace(h.cfg.SAMLLogoutURL)
if logoutURL == "" {
return ""
}
parsed, err := url.Parse(logoutURL)
if err != nil {
return logoutURL
}
values := parsed.Query()
if values.Get("redirect") == "" {
values.Set("redirect", strings.TrimRight(h.cfg.PublicBaseURL, "/")+"/")
parsed.RawQuery = values.Encode()
}
return parsed.String()
}