fix app access regression when the app is on a leaf cluster (#47778)

* only redirect to the public addr of an app when an app redirect is required

* rename local variable from 'host' to 'addr'

* rename param
This commit is contained in:
Andrew LeFevre
2024-11-01 23:43:10 +00:00
committed by GitHub
parent fa97b8f90d
commit 8d0bcc1302
2 changed files with 7 additions and 8 deletions
+6 -3
View File
@@ -617,11 +617,14 @@ const (
//
// The URL's are formed this way to help isolate the path params reserved for the app
// launchers route, where order and existence of previous params matter for this route.
func makeAppRedirectURL(r *http.Request, proxyPublicAddr, hostname string, req launcherURLParams) string {
func makeAppRedirectURL(r *http.Request, proxyPublicAddr, addr string, req launcherURLParams) string {
if req.requiresAppRedirect {
addr = req.publicAddr
}
u := url.URL{
Scheme: "https",
Host: proxyPublicAddr,
Path: fmt.Sprintf("/web/launch/%s", hostname),
Path: fmt.Sprintf("/web/launch/%s", addr),
}
// Presence of a stateToken means we are beginning an app auth exchange.
@@ -634,7 +637,7 @@ func makeAppRedirectURL(r *http.Request, proxyPublicAddr, hostname string, req l
v.Add("required-apps", req.requiredAppFQDNs)
u.RawQuery = v.Encode()
urlPath := []string{"web", "launch", hostname}
urlPath := []string{"web", "launch", addr}
// The order and existence of previous params matter.
//
+1 -5
View File
@@ -81,12 +81,8 @@ func (h *Handler) redirectToLauncher(w http.ResponseWriter, r *http.Request, p l
"https://goteleport.com/docs/application-access/guides/connecting-apps/#start-authproxy-service.")
return trace.BadParameter("public address of the proxy is not set")
}
host := p.publicAddr
if host == "" {
host = r.Host
}
addr, err := utils.ParseAddr(host)
addr, err := utils.ParseAddr(r.Host)
if err != nil {
return trace.Wrap(err)
}