Merge pull request #1015 from openziti/fix.ext.jwt.update.cache.miss

adds ext jwt update event listning for jwt auth mod cache
This commit is contained in:
Andrew
2022-05-20 14:58:54 -04:00
committed by GitHub
2 changed files with 36 additions and 9 deletions
+36 -6
View File
@@ -48,7 +48,8 @@ func NewAuthModuleExtJwt(env Env) *AuthModuleExtJwt {
signers: cmap.New(),
}
env.GetStores().ExternalJwtSigner.AddListener(boltz.EventCreate, ret.onExternalSignerCreateOrUpdate)
env.GetStores().ExternalJwtSigner.AddListener(boltz.EventCreate, ret.onExternalSignerCreate)
env.GetStores().ExternalJwtSigner.AddListener(boltz.EventUpdate, ret.onExternalSignerUpdate)
env.GetStores().ExternalJwtSigner.AddListener(boltz.EventDelete, ret.onExternalSignerDelete)
ret.loadExistingSigners()
@@ -294,11 +295,35 @@ func (a *AuthModuleExtJwt) getKnownSignerRecords() map[string]interface{} {
return a.signers.Items()
}
func (a *AuthModuleExtJwt) onExternalSignerCreateOrUpdate(args ...interface{}) {
func (a *AuthModuleExtJwt) onExternalSignerCreate(args ...interface{}) {
signer, ok := args[0].(*persistence.ExternalJwtSigner)
if !ok {
pfxlog.Logger().Errorf("error on external signature create for authentication module %T: expected %T got %T", a, signer, args[0])
return
}
a.addSigner(signer)
}
func (a *AuthModuleExtJwt) onExternalSignerUpdate(args ...interface{}) {
signer, ok := args[0].(*persistence.ExternalJwtSigner)
if !ok {
pfxlog.Logger().Errorf("error on external signature update for authentication module %T: expected %T got %T", a, signer, args[0])
return
}
//read on update because patches can pass partial data
err := a.env.GetDbProvider().GetDb().View(func(tx *bbolt.Tx) error {
var err error
signer, err = a.env.GetStores().ExternalJwtSigner.LoadOneById(tx, signer.Id)
return err
})
if err != nil {
pfxlog.Logger().Errorf("error on external signature update for authentication module %T: could not read entity: %v", a, err)
}
a.addSigner(signer)
@@ -307,10 +332,14 @@ func (a *AuthModuleExtJwt) onExternalSignerCreateOrUpdate(args ...interface{}) {
func (a *AuthModuleExtJwt) addSigner(signer *persistence.ExternalJwtSigner) {
certs := nfPem.PemStringToCertificates(signer.CertPem)
a.signers.Set(signer.Kid, &signerRecord{
externalJwtSigner: signer,
cert: certs[0],
})
if len(certs) > 0 {
a.signers.Set(signer.Kid, &signerRecord{
externalJwtSigner: signer,
cert: certs[0],
})
} else {
pfxlog.Logger().Error("could not add signer, PEM did not parse to any certificates")
}
}
func (a *AuthModuleExtJwt) onExternalSignerDelete(args ...interface{}) {
@@ -318,6 +347,7 @@ func (a *AuthModuleExtJwt) onExternalSignerDelete(args ...interface{}) {
if !ok {
pfxlog.Logger().Errorf("error on external signature update for authentication module %T: expected %T got %T", a, signer, args[0])
return
}
a.signers.Remove(signer.Kid)
-3
View File
@@ -85,10 +85,7 @@ func (entity *Enrollment) FillJwtInfoWithExpiresAt(env Env, subject string, expi
return err
}
fmt.Printf("\nOld2: %s\n", entity.Jwt)
fmt.Printf("New2: %s\n", signedJwt)
entity.Jwt = signedJwt
fmt.Printf("New2: %s\n", entity.Jwt)
return nil
}