Skip to content

Commit 8e400c0

Browse files
committed
fix: LRU cache for invalidated tokens
Signed-off-by: Dario Tranchitella <[email protected]>
1 parent 665c45c commit 8e400c0

File tree

1 file changed

+6
-1
lines changed
  • internal/webserver/middleware

1 file changed

+6
-1
lines changed

internal/webserver/middleware/jwt.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,22 @@ import (
1111
"github.com/gorilla/mux"
1212
authenticationv1 "k8s.io/api/authentication/v1"
1313
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14+
"k8s.io/apimachinery/pkg/util/sets"
1415
"sigs.k8s.io/controller-runtime/pkg/client"
1516

1617
"github.com/projectcapsule/capsule-proxy/internal/webserver/errors"
1718
)
1819

1920
func CheckJWTMiddleware(client client.Writer) mux.MiddlewareFunc {
21+
invalidatedToken := sets.New[string]()
22+
2023
return func(next http.Handler) http.Handler {
2124
return http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
2225
var err error
2326

2427
token := strings.ReplaceAll(request.Header.Get("Authorization"), "Bearer ", "")
2528

26-
if len(token) > 0 {
29+
if len(token) > 0 && !invalidatedToken.Has(token) {
2730
tr := authenticationv1.TokenReview{
2831
TypeMeta: metav1.TypeMeta{
2932
Kind: "TokenReview",
@@ -37,6 +40,8 @@ func CheckJWTMiddleware(client client.Writer) mux.MiddlewareFunc {
3740
errors.HandleError(writer, err, "cannot create TokenReview")
3841
}
3942
if statusErr := tr.Status.Error; len(statusErr) > 0 {
43+
invalidatedToken.Insert(token)
44+
4045
errors.HandleUnauthorized(writer, fmt.Errorf(statusErr), "cannot authenticate the token due to error")
4146
}
4247
}

0 commit comments

Comments
 (0)