kpango / ntokend

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Athenz N-Token Daemon library License: MIT release CircleCI codecov Codacy Badge Go Report Card GolangCI Go Walker GoDoc

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()
}

About


Languages

Language:Go 98.7%Language:Makefile 1.3%