plugins

package
v0.27.3 Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2023 License: Apache-2.0 Imports: 3 Imported by: 11

Documentation

Index

Constants

View Source
const MFALoginFieldName = "mfa-token"

Variables

View Source
var (
	ErrProviderUnconfigured = errors.New("No valid configuration found for this provider")
	ErrNoValidUserFound     = errors.New("No valid users found")
)

Functions

This section is empty.

Types

type Authenticator

type Authenticator interface {
	// AuthenticatorID needs to return an unique string to identify
	// this special authenticator
	AuthenticatorID() (id string)

	// Configure loads the configuration for the Authenticator from the
	// global config.yaml file which is passed as a byte-slice.
	// If no configuration for the Authenticator is supplied the function
	// needs to return the ErrProviderUnconfigured
	Configure(yamlSource []byte) (err error)

	// DetectUser is used to detect a user without a login form from
	// a cookie, header or other methods
	// If no user was detected the ErrNoValidUserFound needs to be
	// returned
	DetectUser(res http.ResponseWriter, r *http.Request) (user string, groups []string, err error)

	// Login is called when the user submits the login form and needs
	// to authenticate the user or throw an error. If the user has
	// successfully logged in the persistent cookie should be written
	// in order to use DetectUser for the next login.
	// With the login result an array of mfaConfig must be returned. In
	// case there is no MFA config or the provider does not support MFA
	// return nil.
	// If the user did not login correctly the ErrNoValidUserFound
	// needs to be returned
	Login(res http.ResponseWriter, r *http.Request) (user string, mfaConfigs []MFAConfig, err error)

	// LoginFields needs to return the fields required for this login
	// method. If no login using this method is possible the function
	// needs to return nil.
	LoginFields() (fields []LoginField)

	// Logout is called when the user visits the logout endpoint and
	// needs to destroy any persistent stored cookies
	Logout(res http.ResponseWriter, r *http.Request) (err error)

	// SupportsMFA returns the MFA detection capabilities of the login
	// provider. If the provider can provide mfaConfig objects from its
	// configuration return true. If this is true the login interface
	// will display an additional field for this provider for the user
	// to fill in their MFA token.
	SupportsMFA() bool
}

type CookieConfig added in v0.19.0

type CookieConfig struct {
	Domain  string `yaml:"domain"`
	AuthKey string `yaml:"authentication_key"`
	Expire  int    `yaml:"expire"`
	Prefix  string `yaml:"prefix"`
	Secure  bool   `yaml:"secure"`
}

func DefaultCookieConfig added in v0.21.5

func DefaultCookieConfig() CookieConfig

func (CookieConfig) GetSessionOpts added in v0.19.0

func (c CookieConfig) GetSessionOpts() *sessions.Options

type LoginField

type LoginField struct {
	Action      string `json:"action"`
	Label       string `json:"label"`
	Name        string `json:"name"`
	Placeholder string `json:"placeholder"`
	Type        string `json:"type"`
}

type MFAConfig

type MFAConfig struct {
	Provider   string                 `yaml:"provider"`
	Attributes map[string]interface{} `yaml:"attributes"`
}

func (MFAConfig) AttributeInt

func (m MFAConfig) AttributeInt(key string) int

func (MFAConfig) AttributeString

func (m MFAConfig) AttributeString(key string) string

type MFAProvider

type MFAProvider interface {
	// ProviderID needs to return an unique string to identify
	// this special MFA provider
	ProviderID() (id string)

	// Configure loads the configuration for the Authenticator from the
	// global config.yaml file which is passed as a byte-slice.
	// If no configuration for the Authenticator is supplied the function
	// needs to return the ErrProviderUnconfigured
	Configure(yamlSource []byte) (err error)

	// ValidateMFA takes the user from the login cookie and performs a
	// validation against the provided MFA configuration for this user
	ValidateMFA(res http.ResponseWriter, r *http.Request, user string, mfaCfgs []MFAConfig) error
}

type RegisterAuthenticatorFunc

type RegisterAuthenticatorFunc func(Authenticator)

type RegisterMFAProviderFunc

type RegisterMFAProviderFunc func(MFAProvider)

Directories

Path Synopsis
auth
mfa
duo

Jump to

Keyboard shortcuts

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