From 04390bee426befe51af2ee8177afabaa9ce4fa80 Mon Sep 17 00:00:00 2001 From: Henning Perl Date: Wed, 6 Mar 2024 15:34:15 +0100 Subject: [PATCH] feat: send OIDC claim keys to tracing (#3798) --- internal/client-go/go.sum | 1 + selfservice/strategy/oidc/strategy.go | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/internal/client-go/go.sum b/internal/client-go/go.sum index c966c8ddfd0d..6cc3f5911d11 100644 --- a/internal/client-go/go.sum +++ b/internal/client-go/go.sum @@ -4,6 +4,7 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/selfservice/strategy/oidc/strategy.go b/selfservice/strategy/oidc/strategy.go index 5289b2a9b96b..5283791cd85d 100644 --- a/selfservice/strategy/oidc/strategy.go +++ b/selfservice/strategy/oidc/strategy.go @@ -15,6 +15,8 @@ import ( "path/filepath" "strings" + "golang.org/x/exp/maps" + "github.com/ory/x/urlx" "go.opentelemetry.io/otel/attribute" @@ -384,10 +386,12 @@ func (s *Strategy) HandleCallback(w http.ResponseWriter, r *http.Request, ps htt var ( code = stringsx.Coalesce(r.URL.Query().Get("code"), r.URL.Query().Get("authCode")) pid = ps.ByName("provider") + err error ) - ctx := r.Context() - ctx = context.WithValue(ctx, httprouter.ParamsKey, ps) + ctx := context.WithValue(r.Context(), httprouter.ParamsKey, ps) + ctx, span := s.d.Tracer(ctx).Tracer().Start(ctx, "strategy.oidc.ExchangeCode") + defer otelx.End(span, &err) r = r.WithContext(ctx) req, cntnr, err := s.ValidateCallback(w, r) @@ -447,11 +451,13 @@ func (s *Strategy) HandleCallback(w http.ResponseWriter, r *http.Request, ps htt } } - if err := claims.Validate(); err != nil { + if err = claims.Validate(); err != nil { s.forwardError(w, r, req, s.handleError(w, r, req, pid, nil, err)) return } + span.SetAttributes(attribute.StringSlice("claims", maps.Keys(claims.RawClaims))) + switch a := req.(type) { case *login.Flow: if ff, err := s.processLogin(w, r, a, et, claims, provider, cntnr); err != nil {