Documentation
¶
Index ¶
- Variables
- type JWTClaims
- type JWTManager
- func (j *JWTManager) GenerateTokenResponse(_ context.Context, claims JWTClaims) (*TokenResponse, error)
- func (j *JWTManager) HasPermission(resource string, action PermissionAction, permissions []Permission) bool
- func (j *JWTManager) ValidateToken(_ context.Context, tokenString string) (*JWTClaims, error)
- type Method
- type Permission
- type PermissionAction
- type TokenResponse
Constants ¶
This section is empty.
Variables ¶
View Source
var BlockedNamespaces = []string{}
BlockedNamespaces contains a list of namespaces that are not allowed to publish packages. This is used as a denylist mechanism to prevent abuse.
Functions ¶
This section is empty.
Types ¶
type JWTClaims ¶
type JWTClaims struct { jwt.RegisteredClaims // Authentication method used to obtain this token AuthMethod Method `json:"auth_method"` AuthMethodSubject string `json:"auth_method_sub"` Permissions []Permission `json:"permissions"` }
JWTClaims represents the claims for the Registry JWT token
type JWTManager ¶
type JWTManager struct {
// contains filtered or unexported fields
}
JWTManager handles JWT token operations
func NewJWTManager ¶
func NewJWTManager(cfg *config.Config) *JWTManager
func (*JWTManager) GenerateTokenResponse ¶
func (j *JWTManager) GenerateTokenResponse(_ context.Context, claims JWTClaims) (*TokenResponse, error)
GenerateToken generates a new Registry JWT token
func (*JWTManager) HasPermission ¶
func (j *JWTManager) HasPermission(resource string, action PermissionAction, permissions []Permission) bool
func (*JWTManager) ValidateToken ¶
ValidateToken validates a Registry JWT token and returns the claims
type Method ¶
type Method string
Method represents the authentication method used
const ( // GitHub OAuth authentication (access token) MethodGitHubAT Method = "github-at" // GitHub Actions OIDC authentication MethodGitHubOIDC Method = "github-oidc" // Generic OIDC authentication MethodOIDC Method = "oidc" // DNS-based public/private key authentication MethodDNS Method = "dns" // HTTP-based public/private key authentication MethodHTTP Method = "http" // No authentication - should only be used for local development and testing MethodNone Method = "none" )
type Permission ¶
type Permission struct { Action PermissionAction `json:"action"` // The action type (publish or edit) ResourcePattern string `json:"resource"` // e.g., "io.github.username/*" }
type PermissionAction ¶
type PermissionAction string
PermissionAction represents the type of action that can be performed
const ( PermissionActionPublish PermissionAction = "publish" // Intended for admins taking moderation actions only, at least for now PermissionActionEdit PermissionAction = "edit" )
type TokenResponse ¶
Click to show internal directories.
Click to hide internal directories.