mirror of
https://github.com/pomerium/pomerium.git
synced 2025-06-26 14:38:09 +02:00
fix proxy service http middleware
This commit is contained in:
parent
61e56b6e42
commit
1a4ff1c8a4
7 changed files with 8 additions and 14 deletions
|
@ -14,6 +14,7 @@ import (
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/rs/cors"
|
"github.com/rs/cors"
|
||||||
|
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
|
||||||
|
|
||||||
"github.com/pomerium/csrf"
|
"github.com/pomerium/csrf"
|
||||||
"github.com/pomerium/pomerium/internal/authenticateflow"
|
"github.com/pomerium/pomerium/internal/authenticateflow"
|
||||||
|
@ -59,6 +60,7 @@ func (a *Authenticate) Mount(r *mux.Router) {
|
||||||
}
|
}
|
||||||
return csrf.Protect(state.cookieSecret, csrfOptions...)(h)
|
return csrf.Protect(state.cookieSecret, csrfOptions...)(h)
|
||||||
})
|
})
|
||||||
|
r.Use(trace.NewHTTPMiddleware(otelhttp.WithTracerProvider(a.tracerProvider)))
|
||||||
|
|
||||||
// redirect / to /.pomerium/
|
// redirect / to /.pomerium/
|
||||||
r.Path("/").Handler(http.RedirectHandler("/.pomerium/", http.StatusFound))
|
r.Path("/").Handler(http.RedirectHandler("/.pomerium/", http.StatusFound))
|
||||||
|
|
|
@ -10,14 +10,12 @@ import (
|
||||||
"github.com/CAFxX/httpcompression"
|
"github.com/CAFxX/httpcompression"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
|
|
||||||
|
|
||||||
"github.com/pomerium/pomerium/config"
|
"github.com/pomerium/pomerium/config"
|
||||||
"github.com/pomerium/pomerium/internal/handlers"
|
"github.com/pomerium/pomerium/internal/handlers"
|
||||||
"github.com/pomerium/pomerium/internal/log"
|
"github.com/pomerium/pomerium/internal/log"
|
||||||
"github.com/pomerium/pomerium/internal/middleware"
|
"github.com/pomerium/pomerium/internal/middleware"
|
||||||
"github.com/pomerium/pomerium/internal/telemetry"
|
"github.com/pomerium/pomerium/internal/telemetry"
|
||||||
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
|
||||||
"github.com/pomerium/pomerium/internal/urlutil"
|
"github.com/pomerium/pomerium/internal/urlutil"
|
||||||
hpke_handlers "github.com/pomerium/pomerium/pkg/hpke/handlers"
|
hpke_handlers "github.com/pomerium/pomerium/pkg/hpke/handlers"
|
||||||
"github.com/pomerium/pomerium/pkg/telemetry/requestid"
|
"github.com/pomerium/pomerium/pkg/telemetry/requestid"
|
||||||
|
@ -52,7 +50,6 @@ func (srv *Server) addHTTPMiddleware(ctx context.Context, root *mux.Router, _ *c
|
||||||
root.Use(telemetry.HTTPStatsHandler(func() string {
|
root.Use(telemetry.HTTPStatsHandler(func() string {
|
||||||
return srv.currentConfig.Load().Options.InstallationID
|
return srv.currentConfig.Load().Options.InstallationID
|
||||||
}, srv.name))
|
}, srv.name))
|
||||||
root.Use(trace.NewHTTPMiddleware(otelhttp.WithTracerProvider(srv.tracerProvider)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (srv *Server) mountCommonEndpoints(root *mux.Router, cfg *config.Config) error {
|
func (srv *Server) mountCommonEndpoints(root *mux.Router, cfg *config.Config) error {
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/pomerium/pomerium/internal/httputil"
|
"github.com/pomerium/pomerium/internal/httputil"
|
||||||
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
|
||||||
"github.com/pomerium/pomerium/internal/urlutil"
|
"github.com/pomerium/pomerium/internal/urlutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -14,12 +13,10 @@ import (
|
||||||
func SetHeaders(headers map[string]string) func(next http.Handler) http.Handler {
|
func SetHeaders(headers map[string]string) func(next http.Handler) http.Handler {
|
||||||
return func(next http.Handler) http.Handler {
|
return func(next http.Handler) http.Handler {
|
||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx, span := trace.Continue(r.Context(), "middleware.SetHeaders")
|
|
||||||
defer span.End()
|
|
||||||
for key, val := range headers {
|
for key, val := range headers {
|
||||||
w.Header().Set(key, val)
|
w.Header().Set(key, val)
|
||||||
}
|
}
|
||||||
next.ServeHTTP(w, r.WithContext(ctx))
|
next.ServeHTTP(w, r)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,12 +26,10 @@ func SetHeaders(headers map[string]string) func(next http.Handler) http.Handler
|
||||||
func ValidateSignature(sharedKey []byte) func(next http.Handler) http.Handler {
|
func ValidateSignature(sharedKey []byte) func(next http.Handler) http.Handler {
|
||||||
return func(next http.Handler) http.Handler {
|
return func(next http.Handler) http.Handler {
|
||||||
return httputil.HandlerFunc(func(w http.ResponseWriter, r *http.Request) error {
|
return httputil.HandlerFunc(func(w http.ResponseWriter, r *http.Request) error {
|
||||||
ctx, span := trace.Continue(r.Context(), "middleware.ValidateSignature")
|
|
||||||
defer span.End()
|
|
||||||
if err := ValidateRequestURL(r, sharedKey); err != nil {
|
if err := ValidateRequestURL(r, sharedKey); err != nil {
|
||||||
return httputil.NewError(http.StatusBadRequest, err)
|
return httputil.NewError(http.StatusBadRequest, err)
|
||||||
}
|
}
|
||||||
next.ServeHTTP(w, r.WithContext(ctx))
|
next.ServeHTTP(w, r)
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,7 @@ var allServices = []string{
|
||||||
"Authenticate",
|
"Authenticate",
|
||||||
"Control Plane",
|
"Control Plane",
|
||||||
"Data Broker",
|
"Data Broker",
|
||||||
|
"Proxy",
|
||||||
"Upstream",
|
"Upstream",
|
||||||
"IDP",
|
"IDP",
|
||||||
"HTTP Client",
|
"HTTP Client",
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
envoyVersion = "1.32.2"
|
envoyVersion = "1.32.3"
|
||||||
targets = []string{
|
targets = []string{
|
||||||
"darwin-amd64",
|
"darwin-amd64",
|
||||||
"darwin-arm64",
|
"darwin-arm64",
|
||||||
|
|
|
@ -9,13 +9,11 @@ import (
|
||||||
|
|
||||||
"github.com/go-jose/go-jose/v3/jwt"
|
"github.com/go-jose/go-jose/v3/jwt"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
|
|
||||||
|
|
||||||
"github.com/pomerium/pomerium/config"
|
"github.com/pomerium/pomerium/config"
|
||||||
"github.com/pomerium/pomerium/internal/handlers"
|
"github.com/pomerium/pomerium/internal/handlers"
|
||||||
"github.com/pomerium/pomerium/internal/httputil"
|
"github.com/pomerium/pomerium/internal/httputil"
|
||||||
"github.com/pomerium/pomerium/internal/middleware"
|
"github.com/pomerium/pomerium/internal/middleware"
|
||||||
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
|
||||||
"github.com/pomerium/pomerium/internal/urlutil"
|
"github.com/pomerium/pomerium/internal/urlutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -23,7 +21,6 @@ import (
|
||||||
func (p *Proxy) registerDashboardHandlers(r *mux.Router, opts *config.Options) *mux.Router {
|
func (p *Proxy) registerDashboardHandlers(r *mux.Router, opts *config.Options) *mux.Router {
|
||||||
h := httputil.DashboardSubrouter(r)
|
h := httputil.DashboardSubrouter(r)
|
||||||
h.Use(middleware.SetHeaders(httputil.HeadersContentSecurityPolicy))
|
h.Use(middleware.SetHeaders(httputil.HeadersContentSecurityPolicy))
|
||||||
h.Use(trace.NewHTTPMiddleware(otelhttp.WithTracerProvider(p.tracerProvider)))
|
|
||||||
|
|
||||||
// special pomerium endpoints for users to view their session
|
// special pomerium endpoints for users to view their session
|
||||||
h.Path("/").Handler(httputil.HandlerFunc(p.userInfo)).Methods(http.MethodGet)
|
h.Path("/").Handler(httputil.HandlerFunc(p.userInfo)).Methods(http.MethodGet)
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
|
||||||
oteltrace "go.opentelemetry.io/otel/trace"
|
oteltrace "go.opentelemetry.io/otel/trace"
|
||||||
|
|
||||||
"github.com/pomerium/pomerium/config"
|
"github.com/pomerium/pomerium/config"
|
||||||
|
@ -120,6 +121,7 @@ func (p *Proxy) setHandlers(ctx context.Context, opts *config.Options) error {
|
||||||
r.StrictSlash(true)
|
r.StrictSlash(true)
|
||||||
// dashboard handlers are registered to all routes
|
// dashboard handlers are registered to all routes
|
||||||
r = p.registerDashboardHandlers(r, opts)
|
r = p.registerDashboardHandlers(r, opts)
|
||||||
|
r.Use(trace.NewHTTPMiddleware(otelhttp.WithTracerProvider(p.tracerProvider)))
|
||||||
|
|
||||||
p.currentRouter.Store(r)
|
p.currentRouter.Store(r)
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue