@@ -2,6 +2,7 @@ package webapp
22
33import (
44 "encoding/base64"
5+ "errors"
56 "fmt"
67 "log/slog"
78 "net/http"
@@ -82,11 +83,6 @@ func (m *CSRFMiddleware) Handle(next http.Handler) http.Handler {
8283
8384func (m * CSRFMiddleware ) unauthorizedHandler (w http.ResponseWriter , r * http.Request ) {
8485 ctx := r .Context ()
85- otelutil .IntCounterAddOne (
86- ctx ,
87- otelauthgear .CounterCSRFRequestCount ,
88- otelauthgear .WithStatusError (),
89- )
9086
9187 // Check debug cookies and inject info for reporting
9288 omitCookie , err := m .Cookies .GetCookie (r , webapp .CSRFDebugCookieSameSiteOmitDef )
@@ -107,6 +103,35 @@ func (m *CSRFMiddleware) unauthorizedHandler(w http.ResponseWriter, r *http.Requ
107103 maskedCsrfCookieContent := ""
108104 securecookieError := ""
109105 csrfFailureReason := csrf .FailureReason (r )
106+
107+ otelutil .IntCounterAddOne (
108+ ctx ,
109+ otelauthgear .CounterCSRFRequestCount ,
110+ otelauthgear .WithStatusError (),
111+ otelauthgear .WithCSRFHasOmitCookie (hasOmitCookie ),
112+ otelauthgear .WithCSRFHasNoneCookie (hasNoneCookie ),
113+ otelauthgear .WithCSRFHasLaxCookie (hasLaxCookie ),
114+ otelauthgear .WithCSRFHasStrictCookie (hasStrictCookie ),
115+ otelauthgear .WithGorillaCSRFFailureReason (func () string {
116+ var val string
117+ switch {
118+ case errors .Is (csrfFailureReason , csrf .ErrNoReferer ):
119+ val = "ErrNoReferer"
120+ case errors .Is (csrfFailureReason , csrf .ErrBadOrigin ):
121+ val = "ErrBadOrigin"
122+ case errors .Is (csrfFailureReason , csrf .ErrBadReferer ):
123+ val = "ErrBadReferer"
124+ case errors .Is (csrfFailureReason , csrf .ErrNoToken ):
125+ val = "ErrNoToken"
126+ case errors .Is (csrfFailureReason , csrf .ErrBadToken ):
127+ val = "ErrBadToken"
128+ default :
129+ val = "unknown"
130+ }
131+ return val
132+ }()),
133+ )
134+
110135 if csrfCookie != nil {
111136 // do not return value but length only for debug.
112137 csrfCookieSizeInBytes = len ([]byte (csrfCookie .Value ))
@@ -147,6 +172,7 @@ func (m *CSRFMiddleware) unauthorizedHandler(w http.ResponseWriter, r *http.Requ
147172 }
148173
149174 logger := CSRFMiddlewareLogger .GetLogger (ctx )
175+
150176 logger .With (
151177 slog .Bool ("hasOmitCookie" , hasOmitCookie ),
152178 slog .Bool ("hasNoneCookie" , hasNoneCookie ),
@@ -156,7 +182,7 @@ func (m *CSRFMiddleware) unauthorizedHandler(w http.ResponseWriter, r *http.Requ
156182 slog .String ("maskedCsrfCookieContent" , maskedCsrfCookieContent ),
157183 slog .String ("securecookieError" , securecookieError ),
158184 slog .Any ("csrfFailureReason" , csrfFailureReason ),
159- ).Error (ctx , "CSRF Forbidden" )
185+ ).WithSkipLogging (). Error (ctx , "CSRF Forbidden" )
160186
161187 uiImpl := m .UIImplementationService .GetUIImplementation ()
162188
0 commit comments