Athenz N-Token Daemon library
A daemon that generate and cache Athenz n-token in background.
Usage
package main
import (
"context"
"io/ioutil"
"log"
"time"
)
import ntokend "github.com/kpango/ntokend"
func main() {
keyData, err := ioutil.ReadFile("./private_key.pem")
if err != nil && keyData == nil {
log.Fatal(err)
}
ntok, err := ntokend.New(
// load ntoken from file
ntokend.TokenFilePath(""),
// validate the ntoken before return
ntokend.EnableValidate(),
ntokend.DisableValidate(),
// ntoken expiry
ntokend.TokenExpiration(30*time.Minute),
// ntoken refersh period
ntokend.RefreshDuration(25*time.Minute),
// Athenz
ntokend.AthenzDomain("domain"),
ntokend.ServiceName("service"),
ntokend.KeyVersion("keyID"),
ntokend.KeyData(keyData),
// ntokend.Hostname("localhost"),
// ntokend.IPAddr("127.0.0.1"),
)
if err != nil {
log.Fatal(err)
}
// start deamon
ntok.StartTokenUpdater(context.Background())
// check token exist
for !ntok.TokenExists() {
log.Printf("ntoken.TokenExists: false, wait 100ms...")
time.Sleep(100 * time.Millisecond)
}
// get ntoken
ntoken, err := ntok.GetTokenProvider()()
if err != nil {
log.Fatal(err)
}
log.Printf("ntoken: %s", ntoken)
// force ntoken re-generation
err = ntok.Update()
}