File tree 1 file changed +6
-1
lines changed
internal/webserver/middleware
1 file changed +6
-1
lines changed Original file line number Diff line number Diff line change @@ -11,19 +11,22 @@ import (
11
11
"github.com/gorilla/mux"
12
12
authenticationv1 "k8s.io/api/authentication/v1"
13
13
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14
+ "k8s.io/apimachinery/pkg/util/sets"
14
15
"sigs.k8s.io/controller-runtime/pkg/client"
15
16
16
17
"github.com/projectcapsule/capsule-proxy/internal/webserver/errors"
17
18
)
18
19
19
20
func CheckJWTMiddleware (client client.Writer ) mux.MiddlewareFunc {
21
+ invalidatedToken := sets .New [string ]()
22
+
20
23
return func (next http.Handler ) http.Handler {
21
24
return http .HandlerFunc (func (writer http.ResponseWriter , request * http.Request ) {
22
25
var err error
23
26
24
27
token := strings .ReplaceAll (request .Header .Get ("Authorization" ), "Bearer " , "" )
25
28
26
- if len (token ) > 0 {
29
+ if len (token ) > 0 && ! invalidatedToken . Has ( token ) {
27
30
tr := authenticationv1.TokenReview {
28
31
TypeMeta : metav1.TypeMeta {
29
32
Kind : "TokenReview" ,
@@ -37,6 +40,8 @@ func CheckJWTMiddleware(client client.Writer) mux.MiddlewareFunc {
37
40
errors .HandleError (writer , err , "cannot create TokenReview" )
38
41
}
39
42
if statusErr := tr .Status .Error ; len (statusErr ) > 0 {
43
+ invalidatedToken .Insert (token )
44
+
40
45
errors .HandleUnauthorized (writer , fmt .Errorf (statusErr ), "cannot authenticate the token due to error" )
41
46
}
42
47
}
You can’t perform that action at this time.
0 commit comments