extsvcauth

package
v11.1.4-modfix Latest Latest
Warning

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

Go to latest
Published: Aug 20, 2024 License: AGPL-3.0 Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ServiceAccounts AuthProvider = "ServiceAccounts"

	// TmpOrgID is the orgID we use while global service accounts are not supported.
	TmpOrgIDStr string = "1"
	TmpOrgID    int64  = 1
)

Variables

View Source
var (
	ErrUnknownProvider = errutil.BadRequest("extsvcauth.unknown-provider")
)

Functions

This section is empty.

Types

type AuthProvider

type AuthProvider string

type ExternalService

type ExternalService struct {
	Name       string
	ID         string
	Secret     string
	OAuthExtra *OAuthExtra // Auth Provider specificities (ex: ecdsa key pair)
}

ExternalService represents the credentials that the ExternalService can use to connect to Grafana.

type ExternalServiceRegistration

type ExternalServiceRegistration struct {
	Name string
	// Self access configuration
	Self SelfCfg
	// Auth Provider that the client will use to connect to Grafana
	AuthProvider AuthProvider
	// Auth Provider specific config
	OAuthProviderCfg *OAuthProviderCfg
}

ExternalServiceRegistration represents the registration form to save new client.

type ExternalServiceRegistry

type ExternalServiceRegistry interface {
	// HasExternalService returns whether an external service has been saved with that name.
	HasExternalService(ctx context.Context, name string) (bool, error)

	// GetExternalServiceNames returns the names of external services registered in store.
	GetExternalServiceNames(ctx context.Context) ([]string, error)

	// RemoveExternalService removes an external service and its associated resources from the database (ex: service account, token).
	RemoveExternalService(ctx context.Context, name string) error

	// SaveExternalService creates or updates an external service in the database. Based on the requested auth provider,
	// it generates client_id, secrets and any additional provider specificities (ex: rsa keys). It also ensures that the
	// associated service account has the correct permissions.
	SaveExternalService(ctx context.Context, cmd *ExternalServiceRegistration) (*ExternalService, error)
}

type KeyOption

type KeyOption struct {
	// URL       string `json:"url,omitempty"` // TODO allow specifying a URL (to a .jwks file) to fetch the key from
	// PublicPEM contains the Base64 encoded public key in PEM format
	PublicPEM string
	Generate  bool
}

type KeyResult

type KeyResult struct {
	URL        string
	PrivatePem string
	PublicPem  string
	Generated  bool
}

type OAuthExtra

type OAuthExtra struct {
	Audiences   string
	GrantTypes  string
	KeyResult   *KeyResult
	RedirectURI string
}

OAuthExtra represents the specificities of an OAuth2 client.

type OAuthProviderCfg

type OAuthProviderCfg struct {
	// RedirectURI is the URI that is used in the code flow.
	// Note that this is not used yet.
	RedirectURI *string
	// Key is the option to specify a public key or ask the server to generate a crypto key pair.
	Key *KeyOption
}

ProviderCfg represents the registration form specificities needed to register OAuth2 clients.

type SelfCfg

type SelfCfg struct {
	// Enabled allows the service to request access tokens for itself
	Enabled bool
	// Permissions are the permissions that the external service needs its associated service account to have.
	Permissions []accesscontrol.Permission
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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