auth

package
v0.0.0-...-7940cbf Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2023 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CredentialTypeBasic  = CredentialType("BASIC")
	CredentialTypeAPIKey = CredentialType("BEARER")
	CredentialTypeJWT    = CredentialType("JWT")
)
View Source
const (
	NativeRealmName = "native_realm"
	JWTRealmName    = "jwt"
	FileRealmName   = "file_realm"
	NoopRealmName   = "noop_realm"
)
View Source
const (
	RoleSuperUser = RoleType("super_user")
	RoleAdmin     = RoleType("admin")
	RoleAPI       = RoleType("api")
)

Variables

View Source
var ErrCredentialNotFound = errors.New("credential not found")

Functions

This section is empty.

Types

type AuthenticatedUser

type AuthenticatedUser struct {
	AuthenticatedByRealm string      `json:"-"` // Name of realm that authenticated this user
	Credential           Credential  `json:"credential"`
	Role                 Role        `json:"role"`
	Metadata             interface{} `json:"-"` // Additional data set by the realm that authenticated the user, see the jwt realm for an example

	// TODO(subomi): This are set to interfaces temporarily to work around import cycles.
	User   interface{} `json:"user"`
	APIKey interface{} `json:"api_key"`
}

type Credential

type Credential struct {
	Type     CredentialType `json:"type"`
	Username string         `json:"username"`
	Password string         `json:"password"`
	APIKey   string         `json:"api_key"`
	Token    string         `json:"token"`
}

func (*Credential) String

func (c *Credential) String() string

type CredentialType

type CredentialType string

func (CredentialType) String

func (c CredentialType) String() string

type Realm

type Realm interface {
	GetName() string
	Authenticate(ctx context.Context, cred *Credential) (*AuthenticatedUser, error)
}

type Role

type Role struct {
	Type     RoleType `json:"type"`
	Project  string   `json:"project"`
	Endpoint string   `json:"endpoint,omitempty"`
}

Role represents the permission a user is given, if the Type is RoleSuperUser, Then the user will have access to everything regardless of the value of Project.

func (*Role) HasEndpoint

func (r *Role) HasEndpoint(endpointID string) bool

func (*Role) HasProject

func (r *Role) HasProject(projectID string) bool

func (*Role) Validate

func (r *Role) Validate(credType string) error

type RoleType

type RoleType string

func (RoleType) Is

func (r RoleType) Is(rt RoleType) bool

func (RoleType) IsValid

func (r RoleType) IsValid() bool

func (RoleType) String

func (r RoleType) String() string

Jump to

Keyboard shortcuts

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