Help us shape the future of Go! Take the 2026 Go Developer Survey

serviceauth

package
v0.22.0-test Latest Latest
Warning

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

Go to latest
Published: Sep 3, 2026 License: Apache-2.0, Apache-2.0 Imports: 17 Imported by: 0

Documentation

Overview

Package serviceauth mints and verifies short-lived, request-bound JWTs that authenticate CA -> policy-server requests. It replaces RFC 9421 HTTP message signatures (pkg/httpsig): the CA signs a JWT per request instead of the request's HTTP fields, and the policy server verifies it against the CA's SSH public key.

Index

Constants

View Source
const Audience = "epithet-policy"

Audience is the aud claim on every service token.

View Source
const TokenTTL = 60 * time.Second

TokenTTL bounds how long a minted request token is accepted.

Variables

This section is empty.

Functions

This section is empty.

Types

type Signer

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

Signer mints request-bound JWTs signed with a CA SSH private key.

func NewSigner

func NewSigner(privateKey sshcert.RawPrivateKey) (*Signer, error)

NewSigner creates a Signer from an SSH private key.

func (*Signer) Authorize

func (s *Signer) Authorize(req *http.Request, body []byte) error

Authorize mints a request-bound JWT and sets the Authorization header. body may be nil (GET); the bh claim is then over the empty string.

type Verifier

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

Verifier checks request-bound JWTs against the CA's SSH public key.

func NewVerifier

func NewVerifier(publicKey sshcert.RawPublicKey) (*Verifier, error)

NewVerifier creates a Verifier from an SSH public key.

func (*Verifier) Verify

func (v *Verifier) Verify(req *http.Request, body []byte) error

Verify checks the request's Authorization header JWT: signature, aud, exp/iat freshness, that htm/htu match the request actually received, and that bh matches sha256(body). It takes the request (rather than just the header) because method/target binding needs req.Method, req.Host, and req.URL.Path.

Jump to

Keyboard shortcuts

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