Skip to content

Commit 2ed57b5

Browse files
committed
chore: conditionally validate jwt secret
1 parent 980b370 commit 2ed57b5

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

pkg/config/apikeys.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"crypto/elliptic"
77
"crypto/rsa"
88
"encoding/base64"
9-
"io/fs"
109
"math/big"
1110
"time"
1211

@@ -16,22 +15,22 @@ import (
1615
)
1716

1817
// generateAPIKeys generates JWT tokens using the appropriate signing method
19-
func (a *auth) generateAPIKeys(fsys fs.FS) error {
18+
func (a *auth) generateAPIKeys() error {
2019
// Generate anon key if not provided
2120
if len(a.AnonKey.Value) == 0 {
22-
if signed, err := a.generateJWT("anon"); err != nil {
21+
signed, err := a.generateJWT("anon")
22+
if err != nil {
2323
return err
24-
} else {
25-
a.AnonKey.Value = signed
2624
}
25+
a.AnonKey.Value = signed
2726
}
2827
// Generate service_role key if not provided
2928
if len(a.ServiceRoleKey.Value) == 0 {
30-
if signed, err := a.generateJWT("service_role"); err != nil {
29+
signed, err := a.generateJWT("service_role")
30+
if err != nil {
3131
return err
32-
} else {
33-
a.ServiceRoleKey.Value = signed
3432
}
33+
a.ServiceRoleKey.Value = signed
3534
}
3635
return nil
3736
}
@@ -43,6 +42,9 @@ func (a auth) generateJWT(role string) (string, error) {
4342
return generateAsymmetricJWT(a.SigningKeys[0], claims)
4443
}
4544
// Fallback to generating symmetric keys
45+
if len(a.JwtSecret.Value) < 16 {
46+
return "", errors.Errorf("Invalid config for auth.jwt_secret. Must be at least 16 characters")
47+
}
4648
signed, err := claims.NewToken().SignedString([]byte(a.JwtSecret.Value))
4749
if err != nil {
4850
return "", errors.Errorf("failed to generate JWT: %w", err)

pkg/config/config.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -585,10 +585,6 @@ func (c *config) Load(path string, fsys fs.FS) error {
585585
if err := c.loadFromFile(builder.ConfigPath, fsys); err != nil {
586586
return err
587587
}
588-
// Generate JWT tokens
589-
if len(c.Auth.JwtSecret.Value) < 16 {
590-
return errors.Errorf("Invalid config for auth.jwt_secret. Must be at least 16 characters")
591-
}
592588
// TODO: move linked pooler connection string elsewhere
593589
if connString, err := fs.ReadFile(fsys, builder.PoolerUrlPath); err == nil && len(connString) > 0 {
594590
c.Db.Pooler.ConnectionString = string(connString)
@@ -844,7 +840,7 @@ func (c *config) Validate(fsys fs.FS) error {
844840
return errors.Errorf("failed to decode signing keys: %w", err)
845841
}
846842
}
847-
if err := c.Auth.generateAPIKeys(fsys); err != nil {
843+
if err := c.Auth.generateAPIKeys(); err != nil {
848844
return err
849845
}
850846
if err := c.Auth.Hook.validate(); err != nil {

0 commit comments

Comments
 (0)