Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrExpired indicates that token is used after expiry time indicated in exp claim. ErrExpired = errors.New("authentication has expired") // ErrFailsRequirements indicates the password fails to meet the system requirements ErrFailsRequirements = errors.New("password fails requirements") // ErrPasswordEmpty indicates the password is empty ErrPasswordEmpty = errors.New("password is empty") // DefaultTokenExpiry indicates the default duration of a JWT if the TokenExpiry in AuthSettings is nil DefaultTokenExpiry = shared.HumanDuration{Duration: 24 * time.Hour} )
Functions ¶
func CheckPasswordRequirement ¶
CheckPasswordRequirement ensures the password meets sane requirements of 8+ characters, at least one number, one special character, and both an upper and lowercase letter
func Register ¶
func Register(name string, plugin AuthDriver)
Register makes a storage backend available to the system
Types ¶
type AuthAPI ¶
type AuthAPI interface {
// Login to the authentication backend with the given username and password
Login(username, password string) (user *storage.User, err error)
// CreateUser stores the user into the storage backend and takes any necessary actions to create the user that will function in this backend
CreateUser(user storage.User) (err error)
// UserCanChangePassword indicates if a user is able to change his or her's password in this backend
UserCanChangePassword() bool
// GenerateSecurePassword returns a secure version that is safe for long-term storage of the password passed into the function
GenerateSecurePassword(password string) (string, error)
// CanUsersRegister indicates if users are able to register on the system
CanUsersRegister() bool
}
AuthAPI describes the APIs that authentication backends must implement
type AuthClaim ¶
type AuthClaim struct {
Username string `json:"username"`
UserUUID string `json:"user_uuid"`
Email string `json:"email"`
IsAdmin bool `json:"is_admin"`
APIOnly bool `json:"api_only"`
jwt.Claims
}
AuthClaim is a JWT claim describing metadata about an authenticated user
type AuthDriver ¶
type AuthDriver interface {
Open(AuthStorageBackend, PluginSettings) (AuthAPI, error)
}
type AuthSettings ¶
type AuthSettings struct {
Backend string `yaml:"backend"`
Settings map[string]interface{} `yaml:"backend_settings,omitempty"`
TokenExpiry *shared.HumanDuration `yaml:"token_expiry,omitempty"`
SecretKey *string `yaml:"secret_key,omitempty"`
}
AuthSettings describes the basic configuration options for the modula authentication backend
func (*AuthSettings) Validate ¶
func (s *AuthSettings) Validate() error
Validate the configuration; setting default values and returning any errors
type AuthStorageBackend ¶
type AuthStorageBackend interface {
CreateUser(*storage.User) error
SearchForUserByPassword(string, storage.PasswordCheckFunc) (*storage.User, error)
GetUsers() ([]storage.User, error)
}
AuthStorageBackend defines the APIs we need from the storage driver to implement a authentication driver
type AuthWrapper ¶
type AuthWrapper struct {
AuthAPI
// contains filtered or unexported fields
}
AuthWrapper wraps the requested provider
func Open ¶
func Open(db AuthStorageBackend, cfg AuthSettings) (*AuthWrapper, error)
Open creates the authentication plugin
func WrapProvider ¶
func WrapProvider(prov AuthAPI, as AuthSettings) *AuthWrapper
WrapProvider returns an auth wrapper that is used by services like the API to perform authentication
func (*AuthWrapper) Login ¶
func (s *AuthWrapper) Login(username, password string, APIOnly bool) (string, error)
Login the user and set the JWT token to the header
func (*AuthWrapper) VerifyClaim ¶
func (s *AuthWrapper) VerifyClaim(rawclaim, expSubj string, expAuds ...string) (*AuthClaim, error)
VerifyClaim parses a raw JWT claim and validates it
type PluginSettings ¶
type PluginSettings map[string]interface{}
PluginSettings contains settings related to a specific authentication plugin
type ProviderAPI ¶
type ProviderAPI interface {
Login(username, password string, APIOnly bool) (claimStr string, err error)
VerifyClaim(rawclaim, expectedSubject string, auds ...string) (claim *AuthClaim, err error)
}
ProviderAPI describes the APIs available to the a service that requires authentication