Skip to content

Commit 90998f8

Browse files
committed
fix: check jwt signed token
1 parent 6a1a2f3 commit 90998f8

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

services/collaboration/pkg/connector/fileconnector_test.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,10 @@ var _ = Describe("FileConnector", func() {
6868
fc = connector.NewFileConnector(gatewaySelector, cfg, nil)
6969

7070
wopiCtx = middleware.WopiContext{
71-
// a real token is needed for the PutRelativeFileSuggested tests
72-
// although we aren't checking anything inside the token
73-
AccessToken: "eyJhbGciOiJQUzI1NiIsImtpZCI6InByaXZhdGUta2V5IiwidHlwIjoiSldUIn0.eyJhdWQiOiJ3ZWIiLCJleHAiOjE3MjAwOTIyODAsImlhdCI6MTcyMDA5MTk4MCwiaXNzIjoiaHR0cHM6Ly9vY2lzLmpwLnNvbGlkZ2Vhci5wcnYiLCJqdGkiOiJmQldpN0FYaFFQdUhhaDJDV0VQVFFLcENmZ3BGbEFpTCIsImxnLmkiOnsiZG4iOiJicm8iLCJpZCI6Im93bkNsb3VkVVVJRD1mYWYxMTY0Ny03NDUxLTRiOWEtYmZmZS0zYjVkZGNjNTk3MmIiLCJ1biI6ImJyb3RhdG8ifSwibGcucCI6ImlkZW50aWZpZXItbGRhcCIsImxnLnQiOiIxIiwic2NwIjoib3BlbmlkIHByb2ZpbGUgZW1haWwiLCJzdWIiOiJjQXZ1elg4Z1hMWmRpWHgtQDFOV1RKdENQRHFVSjQ0bnQ0NkZ0RDlwNUw3dGplUEZkWk1WSjlFMzBOeDItZHVpN0hLQ0x4QWlXYUNUdGJYNTExSmNkSHcifQ.StpQpE4ipxk8Nhk6xgob1Tovbk6bcUVs5-fkej2hIoKoJKfR2OY-CiFQ3wwgEcFro8notxeVfOmxs36z_ezFeJBZRbxpSggcr77LFtQwlsWvD5AuAgLZN1otdvULehunXE_DtxRJZ1rqnsOBT03zKOZLx8Q7QTy6DeRuf1KQtCIowa9D4ymPM4TTmtQdiW2XjByO3OCLFEMVBfDFGPibR6gMnftGQ5kfiZGDTUVCauEXwE-msZVZ42QY-wFRppX_RIL1Z0p6T4dr_6_y-VM1lNYJ5-dB5c5rg_c03Xu1y_TIxs31-8--dtUyZmBVOZFk8bB9msNk-iaOEjzKeUZLymo_-2qVYvXxzNrkq1QA8luaLR6jec_CRT2P8wsB2nyebFU6_myKe34m6f8uqGhOzcOwPB4TpoxPx4ucQgo1CQJwQZHZsZ7Q6TVYZUXJdWwzzMuvJXmnn36iybw0Ub6On4sGKj3gHetjoJg8VnL-TQkBvf1iHX2ktRG3Nq2rnPrB2OTpi2rLpleWg_s8Y8FXxIgYqM0JG8kO1n5RPGMeYQG7qd6f9wdcaPIvgxCa_HsZtMr7eGcDzZtxp-NivgJOS6ode0ZAJ3wGU-AVhmyshpds3DFECcvkBcP_4dD52AXiAq9X3UVkVdNsxs_yB9P7zBcdsKsD6QDJv5gf-6DEu34",
71+
// A real token is needed for the PutRelativeFileSuggested tests although we aren't checking anything inside the token.
72+
// Test token details: HS256 (HMAC with SHA-256).
73+
// Token used in PutRelativeFileSuggested tests, validated against cfg.Wopi.Secret ("topsecret"). If tests fail, check token header {"alg":"HS256","typ":"JWT"} and validation in wopicontext.go.
74+
AccessToken: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ3ZWIiLCJleHAiOjE3MjAwOTIyODAsImlhdCI6MTcyMDA5MTk4MCwiaXNzIjoiaHR0cHM6Ly9vY2lzLmpwLnNvbGlkZ2Vhci5wcnYiLCJqdGkiOiJmQldpN0FYaFFQdUhhaDJDV0VQVFFLcENmZ3BGbEFpTCIsImxnLmkiOnsiZG4iOiJicm8iLCJpZCI6Im93bkNsb3VkVVVJRD1mYWYxMTY0Ny03NDUxLTRiOWEtYmZmZS0zYjVkZGNjNTk3MmIiLCJ1biI6ImJyb3RhdG8ifSwibGcucCI6ImlkZW50aWZpZXItbGRhcCIsImxnLnQiOiIxIiwic2NwIjoib3BlbmlkIHByb2ZpbGUgZW1haWwiLCJzdWIiOiJjQXZ1elg4Z1hMWmRpWHgtQDFOV1RKdENQRHFVSjQ0bnQ0NkZ0RDlwNUw3dGplUEZkWk1WSjlFMzBOeDItZHVpN0hLQ0x4QWlXYUNUdGJYNTExSmNkSHcifQ.8J7Zx8J7Zx8J7Zx8J7Zx8J7Zx8J7Zx8J7Zx8J7Zx8J7Zx8J7Zx8J7Zx8J7Zx",
7475
FileReference: &providerv1beta1.Reference{
7576
ResourceId: &providerv1beta1.ResourceId{
7677
StorageId: "abc",

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)