diff --git a/lib/auth/middleware.go b/lib/auth/middleware.go index 5c41281c65421..3d9461af4370f 100644 --- a/lib/auth/middleware.go +++ b/lib/auth/middleware.go @@ -921,6 +921,8 @@ func NewImpersonatorRoundTripper(rt http.RoundTripper) *ImpersonatorRoundTripper // RoundTrip implements http.RoundTripper interface to include the identity // in the request header. func (r *ImpersonatorRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + req = req.Clone(req.Context()) + identity, err := authz.UserFromContext(req.Context()) if err != nil { return nil, trace.Wrap(err) @@ -930,7 +932,6 @@ func (r *ImpersonatorRoundTripper) RoundTrip(req *http.Request) (*http.Response, return nil, trace.Wrap(err) } req.Header.Set(TeleportImpersonateUserHeader, string(b)) - defer req.Header.Del(TeleportImpersonateUserHeader) clientSrcAddr, err := authz.ClientSrcAddrFromContext(req.Context()) if err != nil { @@ -938,7 +939,6 @@ func (r *ImpersonatorRoundTripper) RoundTrip(req *http.Request) (*http.Response, } req.Header.Set(TeleportImpersonateIPHeader, clientSrcAddr.String()) - defer req.Header.Del(TeleportImpersonateIPHeader) return r.RoundTripper.RoundTrip(req) }