@@ -3,9 +3,11 @@ package router
33import (
44 "context"
55 "encoding/json"
6+ "errors"
67 "fmt"
78 "io"
89 "net/http"
10+ "time"
911
1012 "github.com/golang-jwt/jwt/v5"
1113 "github.com/juicebox-systems/juicebox-software-realm/otel"
@@ -44,11 +46,17 @@ func NewTenantAPIServer(
4446
4547func AddTenantLogHandlers (e * echo.Echo , realmID types.RealmID , pubsub pubsub.PubSub , secretsManager secrets.SecretsManager , secretsPrefix string ) {
4648 jwtConfig := echojwt.Config {
47- KeyFunc : func (t * jwt.Token ) (interface {}, error ) {
48- return secrets .GetJWTSigningKeyWithPrefix (context .TODO (), secretsManager , secretsPrefix , t )
49- },
50- NewClaimsFunc : func (_ echo.Context ) jwt.Claims {
51- return & claims {}
49+ ParseTokenFunc : func (c echo.Context , auth string ) (interface {}, error ) {
50+ token , err := jwt .ParseWithClaims (auth , & claims {}, func (t * jwt.Token ) (interface {}, error ) {
51+ return secrets .GetJWTSigningKeyWithPrefix (c .Request ().Context (), secretsManager , secretsPrefix , t )
52+ }, jwt .WithLeeway (5 * time .Second ))
53+ if err != nil {
54+ return nil , & echojwt.TokenError {Token : token , Err : err }
55+ }
56+ if ! token .Valid {
57+ return nil , & echojwt.TokenError {Token : token , Err : errors .New ("invalid token" )}
58+ }
59+ return token , nil
5260 },
5361 }
5462 e .POST ("/tenant_log" , func (c echo.Context ) error {
0 commit comments