auth

package
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 23, 2026 License: AGPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ContextKeyDeviceID  = "device_id"
	ContextKeyDevice    = "device"
	ContextKeyRequestID = "request_id"
)

ContextKeys for values stored in Gin context

Variables

View Source
var (
	ErrNonceNotFound = errors.New("nonce not found or expired")
	ErrNonceCapacity = errors.New("nonce store at capacity")
)

Functions

func DeviceRateLimit added in v0.1.1

func DeviceRateLimit(mutationPerMin, readPerMin int) gin.HandlerFunc

DeviceRateLimit implements per-device rate limiting with separate limits for mutations and reads.

func DeviceTPMAuth

func DeviceTPMAuth(deviceStore *store.DeviceStore, nonceStore *NonceStore, verifier tpm.Verifier, logger *slog.Logger) gin.HandlerFunc

DeviceTPMAuth validates per-request TPM attestation.

func NexusAuth

func NexusAuth(cfg *config.Config, clientCAs *x509.CertPool, logger *slog.Logger) gin.HandlerFunc

NexusAuth validates mTLS client certificates for Nexus registration.

func RateLimit

func RateLimit(globalRPS, perIPRPS int) gin.HandlerFunc

RateLimit implements a simple token bucket rate limiter with periodic cleanup.

func RequestIDMiddleware

func RequestIDMiddleware() gin.HandlerFunc

RequestIDMiddleware adds a unique request ID to each request.

Types

type NonceStore

type NonceStore struct {
	// contains filtered or unexported fields
}

func NewNonceStore

func NewNonceStore(logger *slog.Logger) *NonceStore

func (*NonceStore) CleanupLoop

func (s *NonceStore) CleanupLoop(ctx context.Context)

CleanupLoop removes expired nonces periodically.

func (*NonceStore) Consume

func (s *NonceStore) Consume(nonce string) error

Consume validates and removes a nonce (one-time use).

func (*NonceStore) Generate

func (s *NonceStore) Generate() (string, time.Time, error)

Generate creates a new nonce and returns it as base64-encoded string.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL