Documentation
¶
Index ¶
Constants ¶
const ( // Resource information that are used as encryption key storage. Can be accessible by multiple dashboard replicas. EncryptionKeyHolderName = "kubernetes-dashboard-key-holder" EncryptionKeyHolderNamespace = "kube-system" // Expiration time (in seconds) of tokens generated by dashboard. Default: 15 min. DefaultTokenTTL = 900 )
Variables ¶
This section is empty.
Functions ¶
func ShouldRejectRequest ¶
ShouldRejectRequest returns true if url contains name and namespace of resource that should be filtered out from dashboard.
Types ¶
type AuthManager ¶
type AuthManager interface {
// Login authenticates user based on provided LoginSpec and returns AuthResponse. AuthResponse contains
// generated token and list of non-critical errors such as 'Failed authentication'.
Login(*LoginSpec) (*AuthResponse, error)
// Refresh takes valid token that hasn't expired yet and returns a new one with expiration time set to TokenTTL. In
// case provided token has expired, token expiration error is returned.
Refresh(string) (string, error)
// AuthenticationModes returns array of auth modes supported by dashboard.
AuthenticationModes() []AuthenticationMode
}
AuthManager is used for user authentication management.
type AuthResponse ¶
type AuthResponse struct {
// JWEToken is a token generated during login request that contains AuthInfo data in the payload.
JWEToken string `json:"jweToken"`
// Errors are a list of non-critical errors that happened during login request.
Errors []error `json:"errors"`
}
AuthResponse is returned from our backend as a response for login/refresh requests. It contains generated JWEToken and a list of non-critical errors such as 'Failed authentication'.
type AuthenticationMode ¶
type AuthenticationMode string
AuthenticationMode represents auth mode supported by dashboard, i.e. basic.
const ( Token AuthenticationMode = "token" Basic AuthenticationMode = "basic" )
Authentication modes supported by dashboard should be defined below.
func (AuthenticationMode) String ¶
func (self AuthenticationMode) String() string
String returns string representation of auth mode.
type AuthenticationModes ¶
type AuthenticationModes map[AuthenticationMode]bool
AuthenticationModes represents auth modes supported by dashboard.
func ToAuthenticationModes ¶
func ToAuthenticationModes(modes []string) AuthenticationModes
ToAuthenticationModes transforms array of authentication mode strings to valid AuthenticationModes type.
func (AuthenticationModes) Add ¶
func (self AuthenticationModes) Add(mode AuthenticationMode)
Add adds given auth mode to AuthenticationModes map
func (AuthenticationModes) Array ¶
func (self AuthenticationModes) Array() []AuthenticationMode
Array returns array of auth modes supported by dashboard.
func (AuthenticationModes) IsEnabled ¶
func (self AuthenticationModes) IsEnabled(mode AuthenticationMode) bool
IsEnabled returns true if given auth mode is supported, false otherwise.
type Authenticator ¶
type Authenticator interface {
// GetAuthInfo returns filled AuthInfo structure that can be used for K8S api client creation.
GetAuthInfo() (api.AuthInfo, error)
}
Authenticator represents authentication methods supported by Dashboard. Currently supported types are:
- Token based - Any bearer token accepted by apiserver
- Basic - Username and password based authentication. Requires that apiserver has basic auth enabled also
- Kubeconfig based - Authenticates user based on kubeconfig file. Only tokne/basic modes are supported within the kubeconfig file.
type LoginModesResponse ¶
type LoginModesResponse struct {
Modes []AuthenticationMode `json:"modes"`
}
LoginModesResponse contains list of auth modes supported by dashboard.
type LoginSpec ¶
type LoginSpec struct {
// Username is the username for basic authentication to the kubernetes cluster.
Username string `json:"username"`
// Password is the password for basic authentication to the kubernetes cluster.
Password string `json:"password"`
// Token is the bearer token for authentication to the kubernetes cluster.
Token string `json:"token"`
// KubeConfig is the content of users' kubeconfig file. It will be parsed and auth data will be extracted.
// Kubeconfig can not contain any paths. All data has to be provided within the file.
KubeConfig string `json:"kubeConfig"`
}
LoginSpec is extracted from request coming from Dashboard frontend during login request. It contains all the information required to authenticate user.
type TokenManager ¶
type TokenManager interface {
// Generate secure token based on AuthInfo structure and save it it tokens' payload.
Generate(api.AuthInfo) (string, error)
// Decrypt generated token and return AuthInfo structure that will be used for K8S api client creation.
Decrypt(string) (*api.AuthInfo, error)
// Refresh returns refreshed token based on provided token. In case provided token has expired, token expiration
// error is returned.
Refresh(string) (string, error)
// SetTokenTTL sets expiration time (in seconds) of generated tokens.
SetTokenTTL(time.Duration)
}
TokenManager is responsible for generating and decrypting tokens used for authorization. Authorization is handled by K8S apiserver. Token contains AuthInfo structure used to create K8S api client.
type TokenRefreshSpec ¶
type TokenRefreshSpec struct {
// JWEToken is a token generated during login request that contains AuthInfo data in the payload.
JWEToken string `json:"jweToken"`
}
TokenRefreshSpec contains token that is required by token refresh operation.