Skip to content

Commit 6b3d7dd

Browse files
committed
fix: verify singed jwt token
1 parent 012c727 commit 6b3d7dd

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

services/collaboration/pkg/middleware/wopicontext.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,14 @@ func GenerateWopiToken(wopiContext WopiContext, cfg *config.Config, st microstor
198198
}
199199

200200
cs3Claims := &jwt.RegisteredClaims{}
201-
cs3JWTparser := jwt.Parser{}
202-
_, _, err = cs3JWTparser.ParseUnverified(wopiContext.AccessToken, cs3Claims)
201+
_, err = jwt.ParseWithClaims(wopiContext.AccessToken, cs3Claims, func(token *jwt.Token) (interface{}, error) {
202+
203+
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
204+
return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"])
205+
}
206+
207+
return []byte(cfg.TokenManager.JWTSecret), nil
208+
})
203209
if err != nil {
204210
return "", 0, err
205211
}

services/collaboration/pkg/middleware/wopicontext_test.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,12 @@ var _ = Describe("Wopi Context Middleware", func() {
130130
AccessToken: token,
131131
}
132132
// use wrong wopi secret when generating the wopi token
133-
wopiToken, ttl, err := middleware.GenerateWopiToken(wopiContext, &config.Config{Wopi: config.Wopi{
134-
Secret: "wrongSecret",
135-
}}, nil)
133+
wopiToken, ttl, err := middleware.GenerateWopiToken(wopiContext, &config.Config{
134+
TokenManager: &config.TokenManager{JWTSecret: cfg.TokenManager.JWTSecret},
135+
Wopi: config.Wopi{
136+
Secret: "wrongSecret",
137+
},
138+
}, nil)
136139
q := req.URL.Query()
137140
q.Add("access_token", wopiToken)
138141
q.Add("access_token_ttl", strconv.FormatInt(ttl, 10))

0 commit comments

Comments
 (0)