@@ -3,9 +3,12 @@ package auth
33import (
44 "context"
55 "errors"
6+ "fmt"
67 "net/http"
78 "strings"
89
10+ "github.com/golang-jwt/jwt/v5"
11+
912 "github.com/getkin/kin-openapi/openapi3"
1013 "github.com/getkin/kin-openapi/routers"
1114 "github.com/getkin/kin-openapi/routers/legacy"
@@ -148,18 +151,26 @@ func checkSecurityRequirements(r *http.Request,
148151
149152func userByToken (ctx context.Context , secretStore crypt.SecretStore , userRepo models.IUserRepo , tokenString string ) (* models.User , error ) {
150153 claims , err := VerifyToken (secretStore .SharedSecret (), tokenString )
151- // make sure no audience is set for login token
152- if err != nil || ! claims .VerifyAudience (LoginAudience , false ) {
154+ if err != nil {
153155 return nil , ErrAuthenticatingRequest
154156 }
157+ // make sure no audience is set for login token
158+ validator := jwt .NewValidator (jwt .WithAudience (LoginAudience ))
155159
156- username := claims .Subject
160+ if err = validator .Validate (claims ); err != nil {
161+ return nil , fmt .Errorf ("invalid token: %s %w" , err , ErrAuthenticatingRequest )
162+ }
163+
164+ username , err := claims .GetSubject ()
165+ if err != nil {
166+ return nil , err
167+ }
157168 userData , err := userRepo .Get (ctx , models .NewGetUserParams ().SetName (username ))
158169 if err != nil {
159170 log .With (
160- "token_id " , claims . Id ,
171+ "token " , tokenString ,
161172 "username" , username ,
162- "subject" , claims . Subject ,
173+ "subject" , username ,
163174 ).Debugf ("could not find user id by credentials %v" , err )
164175 return nil , ErrAuthenticatingRequest
165176 }
0 commit comments