in proxy/lib/proxy/proxy.go [197:227]
func (s *Service) proxy(w http.ResponseWriter, r *http.Request) {
cloned := r.Clone(r.Context())
if err := s.verifyClientCredentials(r); err != nil {
httputils.WriteError(w, err)
return
}
if err := s.verifyRequestPath(r); err != nil {
httputils.WriteError(w, err)
return
}
a, err := auth.FromContext(r.Context())
if err != nil {
httputils.WriteError(w, status.Errorf(status.Code(err), "read identity failed: %v", err))
return
}
tok, err := s.getAccessTokenForSA(r.Context())
if err != nil {
httputils.WriteError(w, status.Errorf(codes.Unavailable, "getAccessTokenForSA() failed: %v", err))
return
}
cloned.Header.Set("Authorization", "Bearer "+tok)
idToFhirHeader(a.ID, s.opts.RemoveScopes, cloned)
s.fhirProxy.ServeHTTP(w, cloned)
}