Skip to content

Commit 37a0ace

Browse files
Improve error messages for JWT rotation (#364)
1 parent ced6ad9 commit 37a0ace

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

service/jwt.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func (j jwtManager) add(d []byte) error {
8888
return nil
8989
}
9090

91-
func (j jwtManager) remove(i *api.ClusterInventory, p *Peer, s string, d []byte) error {
91+
func (j jwtManager) remove(i *api.ClusterInventory, p *Peer, hash string, token []byte) error {
9292
if i.Error != nil {
9393
return errors.Errorf("Unable to remove token if member is failed: %s", i.Error.Error)
9494
}
@@ -99,13 +99,13 @@ func (j jwtManager) remove(i *api.ClusterInventory, p *Peer, s string, d []byte)
9999
return errors.Errorf("Unable to get hashes - probably not supported by server")
100100
}
101101

102-
if n.Hashes.JWT.Active.GetSHA().Checksum() == Sha256sum(d) {
103-
return errors.Errorf("JWT token %s is active on peer %s and member %s", Sha256sum(d), pname, mname)
102+
if n.Hashes.JWT.Active.GetSHA().Checksum() == Sha256sum(token) {
103+
return errors.Errorf("JWT token %s is active on peer %s and member %s", Sha256sum(token), pname, mname)
104104
}
105105
}
106106
}
107107

108-
return os.Remove(path.Join(j.dir, s))
108+
return os.Remove(path.Join(j.dir, hash))
109109
}
110110

111111
type tokens map[string][]byte
@@ -201,9 +201,9 @@ func (s *httpServer) jwtActivateE(r *http.Request) (int, error) {
201201

202202
switch r.Method {
203203
case http.MethodPost:
204-
s.log.Info().Msgf("Received JWT Refresh call")
204+
s.log.Info().Msgf("Received JWT Activate call")
205205
if err := s.synchronizeJWTOnMembers(i, token); err != nil {
206-
s.log.Warn().Err(err).Msgf("JWT Refresh call failed")
206+
s.log.Warn().Err(err).Msgf("JWT Activate call failed")
207207
return 0, err
208208
}
209209
s.log.Info().Msgf("JWT Refresh call done")
@@ -284,7 +284,6 @@ func (s *httpServer) synchronizeJWTOnMembers(ci *api.ClusterInventory, active st
284284
}
285285

286286
f := newJWTManager(path.Join(d, definitions.ArangodJWTSecretFolderName))
287-
288287
fTokens, err := f.tokens()
289288
if err != nil {
290289
return err
@@ -313,7 +312,6 @@ func (s *httpServer) synchronizeJWTOnMembers(ci *api.ClusterInventory, active st
313312
}
314313

315314
cActive, ok := fTokens[definitions.ArangodJWTSecretActive]
316-
317315
if !ok {
318316
_, d, ok := fTokens.getAny()
319317
if !ok {
@@ -335,7 +333,7 @@ func (s *httpServer) synchronizeJWTOnMembers(ci *api.ClusterInventory, active st
335333
if active != "" && active != Sha256sum(cActive) {
336334
eActive, ok := fTokens[active]
337335
if !ok {
338-
return errors.Errorf("Unable to find key which needs to be activated")
336+
return errors.Errorf("Unable to find key which needs to be activated on peer %s and member %s", p.ID, t)
339337
}
340338

341339
if err := f.setActive(ci, Sha256sum(eActive)); err != nil {
@@ -370,13 +368,13 @@ func (s *httpServer) synchronizeJWTOnMembers(ci *api.ClusterInventory, active st
370368
return errors.Errorf("Invalid tokens length")
371369
}
372370

373-
for t := range fTokens {
374-
if t == definitions.ArangodJWTSecretActive {
371+
for tok := range fTokens {
372+
if tok == definitions.ArangodJWTSecretActive {
375373
continue
376374
}
377375

378-
if !jwt.Result.Passive.ContainsSha(t) {
379-
return errors.Errorf("Checksum %s not found on server", t)
376+
if !jwt.Result.Passive.ContainsSha(tok) {
377+
return errors.Errorf("Checksum %s not found on peer %s and member %s", tok, p.ID, t)
380378
}
381379
}
382380

0 commit comments

Comments
 (0)