Remove failed bearer tokens from logs
This commit is contained in:
parent
22f60e9b63
commit
5f8f856260
|
|
@ -1,6 +1,7 @@
|
||||||
package middleware
|
package middleware
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
|
@ -9,7 +10,7 @@ import (
|
||||||
middlewareapi "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/middleware"
|
middlewareapi "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/middleware"
|
||||||
sessionsapi "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
|
sessionsapi "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
|
||||||
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger"
|
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger"
|
||||||
"k8s.io/apimachinery/pkg/util/errors"
|
k8serrors "k8s.io/apimachinery/pkg/util/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
const jwtRegexFormat = `^ey[IJ][a-zA-Z0-9_-]*\.ey[IJ][a-zA-Z0-9_-]*\.[a-zA-Z0-9_-]+$`
|
const jwtRegexFormat = `^ey[IJ][a-zA-Z0-9_-]*\.ey[IJ][a-zA-Z0-9_-]*\.[a-zA-Z0-9_-]+$`
|
||||||
|
|
@ -70,17 +71,18 @@ func (j *jwtSessionLoader) getJwtSession(req *http.Request) (*sessionsapi.Sessio
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
errs := []error{fmt.Errorf("unable to verify jwt token: %q", req.Header.Get("Authorization"))}
|
// This leading error message only occurs if all session loaders fail
|
||||||
|
errs := []error{errors.New("unable to verify bearer token")}
|
||||||
for _, loader := range j.sessionLoaders {
|
for _, loader := range j.sessionLoaders {
|
||||||
session, err := loader(req.Context(), token)
|
session, err := loader(req.Context(), token)
|
||||||
if err == nil {
|
if err != nil {
|
||||||
return session, nil
|
|
||||||
} else {
|
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
return session, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, errors.NewAggregate(errs)
|
return nil, k8serrors.NewAggregate(errs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// findTokenFromHeader finds a valid JWT token from the Authorization header of a given request.
|
// findTokenFromHeader finds a valid JWT token from the Authorization header of a given request.
|
||||||
|
|
|
||||||
|
|
@ -225,7 +225,7 @@ Nnc3a3lGVWFCNUMxQnNJcnJMTWxka1dFaHluYmI4Ongtb2F1dGgtYmFzaWM=`
|
||||||
Entry("Bearer <nonVerifiedToken>", getJWTSessionTableInput{
|
Entry("Bearer <nonVerifiedToken>", getJWTSessionTableInput{
|
||||||
authorizationHeader: fmt.Sprintf("Bearer %s", nonVerifiedToken),
|
authorizationHeader: fmt.Sprintf("Bearer %s", nonVerifiedToken),
|
||||||
expectedErr: k8serrors.NewAggregate([]error{
|
expectedErr: k8serrors.NewAggregate([]error{
|
||||||
errors.New("unable to verify jwt token: \"Bearer eyJfoobar.eyJfoobar.12345asdf\""),
|
errors.New("unable to verify bearer token"),
|
||||||
errors.New("oidc: malformed jwt: illegal base64 data at input byte 8"),
|
errors.New("oidc: malformed jwt: illegal base64 data at input byte 8"),
|
||||||
}),
|
}),
|
||||||
expectedSession: nil,
|
expectedSession: nil,
|
||||||
|
|
@ -238,7 +238,7 @@ Nnc3a3lGVWFCNUMxQnNJcnJMTWxka1dFaHluYmI4Ongtb2F1dGgtYmFzaWM=`
|
||||||
Entry("Basic Base64(<nonVerifiedToken>:) (No password)", getJWTSessionTableInput{
|
Entry("Basic Base64(<nonVerifiedToken>:) (No password)", getJWTSessionTableInput{
|
||||||
authorizationHeader: "Basic ZXlKZm9vYmFyLmV5SmZvb2Jhci4xMjM0NWFzZGY6",
|
authorizationHeader: "Basic ZXlKZm9vYmFyLmV5SmZvb2Jhci4xMjM0NWFzZGY6",
|
||||||
expectedErr: k8serrors.NewAggregate([]error{
|
expectedErr: k8serrors.NewAggregate([]error{
|
||||||
errors.New("unable to verify jwt token: \"Basic ZXlKZm9vYmFyLmV5SmZvb2Jhci4xMjM0NWFzZGY6\""),
|
errors.New("unable to verify bearer token"),
|
||||||
errors.New("oidc: malformed jwt: illegal base64 data at input byte 8"),
|
errors.New("oidc: malformed jwt: illegal base64 data at input byte 8"),
|
||||||
}),
|
}),
|
||||||
expectedSession: nil,
|
expectedSession: nil,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue