robotaccount

package
v1.98.0 Latest Latest
Warning

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

Go to latest
Published: May 18, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const JWTAudience = "artifact-cas.chainloop"

Variables

View Source
var SigningMethod = jwt.SigningMethodES512

Functions

This section is empty.

Types

type Builder

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

func NewBuilder

func NewBuilder(opts ...NewOpt) (*Builder, error)

func (*Builder) GenerateJWT

func (ra *Builder) GenerateJWT(backendType, secretID, audience string, role Role, maxBytes int64, orgID string) (string, error)

GenerateJWT mints a CAS token. All fields are required, including orgID — managed providers (e.g. AWS-S3-ACCESS-POINT) need it to scope per-tenant STS sessions and other providers still record it for audit. The token always carries the CAS audience and a short expiry window.

type Claims

type Claims struct {
	jwt.RegisteredClaims
	Role           Role   `json:"role"`      // either downloader or uploader
	StoredSecretID string `json:"secret-id"` // path to the OCI secret in the vault
	BackendType    string `json:"backend"`   // backend to use, i.e OCI
	MaxBytes       int64  `json:"maxbytes"`  // max bytes to upload
	// OrgID identifies the authenticated org this token was minted for.
	// Managed providers (e.g. AWS-S3-ACCESS-POINT) require it to scope
	// per-tenant STS sessions; the non-managed providers ignore it but
	// it is still carried for audit traceability.
	OrgID string `json:"org-id"`
}

func InfoFromAuth added in v1.98.0

func InfoFromAuth(ctx context.Context) (*Claims, error)

InfoFromAuth extracts the JWT claims from the context, note that the JWT verification has happened in the middleware

func (*Claims) CheckRole

func (c *Claims) CheckRole(r Role) error

func (*Claims) Valid

func (c *Claims) Valid() error

Additional validation checks

type NewOpt

type NewOpt func(b *Builder) error

func WithExpiration

func WithExpiration(d time.Duration) NewOpt

func WithIssuer

func WithIssuer(issuer string) NewOpt

func WithPrivateKey

func WithPrivateKey(path string) NewOpt

type Role

type Role string
const (
	Downloader Role = "downloader"
	Uploader   Role = "uploader"
)

Jump to

Keyboard shortcuts

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