Documentation ¶
Index ¶
- func AddNicksAuthorizationsToCache(entity *Entity) error
- func CheckAuthIdentity(authValue string, validFor string) (identityTokenStruct, string, error)
- func CheckIdentity(nick, password, validFor string) (identityTokenStruct, error)
- func Hash(original string) string
- func Initialize(aDb DbInterface)
- func InitializeDirectory(folderPath string) error
- func IsAuthIdentityTokenValid(authValue string, validFor string) bool
- func IsAuthorized(identityToken string, ressourceString string, actionString string) bool
- func IsIdentityTokenValid(token string, validFor string) bool
- func ReadDefaultRoles() error
- func ReadRoles() error
- func SaveDefaultRoles(newDefaultRoles []RoleIdType) error
- func SaveRoles(newRoles RoleCacheMap) error
- type ActionMap
- type ActionType
- type AuthorizationCacheMap
- type AuthorizationStruct
- type ConfigurationStruct
- type DbFile
- func (m DbFile) DeleteContentsFromDirectory(dir string) error
- func (m DbFile) DeleteEntity(nick string) error
- func (m DbFile) EntityExists(nick string) bool
- func (m *DbFile) Initialize()
- func (m DbFile) ReadEntityByNick(nick string) (*Entity, error)
- func (m DbFile) ReadEntityList() (nicklist []string, e error)
- func (m DbFile) ReadPublicEntityByNick(nick string) (*PublicEntity, error)
- func (m DbFile) SaveEntity(e *Entity) error
- type DbInterface
- type DbTransient
- func (m DbTransient) DeleteEntity(nick string) error
- func (m DbTransient) EntityExists(nick string) bool
- func (m *DbTransient) Initialize()
- func (m DbTransient) ReadEntityByNick(nick string) (*Entity, error)
- func (m DbTransient) ReadEntityList() (nicklist []string, e error)
- func (m DbTransient) ReadPublicEntityByNick(nick string) (*PublicEntity, error)
- func (m DbTransient) SaveEntity(e *Entity) error
- type Entity
- type EntityToken
- type NewEntityStruct
- type PublicEntity
- type RessourceType
- type RoleBodyStruct
- type RoleCacheMap
- type RoleIdType
- type ServerId
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddNicksAuthorizationsToCache ¶ added in v0.0.19
AddNicksAuthorizationsToCache adds the authorizations of a nick to the authorization cache
func CheckAuthIdentity ¶
CheckAuthIdentity checks an authValue and provides and identity token (for validFor) it also returns the nick, that was checked
func CheckIdentity ¶
CheckIdentity checks nick and password and provides and identity token (for validFor)
func InitializeDirectory ¶ added in v0.0.3
InitializeDirectory checks if 'folderPath' exists and creates it, if it's not existing
func IsAuthIdentityTokenValid ¶
IsAuthIdentityTokenValid checks if the identity token is valid, validFor contains information about the client, e.g. the IP address
func IsAuthorized ¶ added in v0.0.3
IsAuthorized checks if the entity, provided through token, is authorizied for action on ressource
func IsIdentityTokenValid ¶
IsIdentityTokenValid checks if the identity token is valid, validFor contains information about the client, e.g. the IP address
func ReadDefaultRoles ¶ added in v0.0.19
func ReadDefaultRoles() error
ReadDefaultRoles loads the list of roles for new entities
func SaveDefaultRoles ¶ added in v0.0.19
func SaveDefaultRoles(newDefaultRoles []RoleIdType) error
SaveDefaultRoles loads the list of roles for new entities
func SaveRoles ¶ added in v0.0.19
func SaveRoles(newRoles RoleCacheMap) error
SaveRoles loads the roles newly from Db
Types ¶
type ActionMap ¶ added in v0.0.19
type ActionMap map[ActionType]struct{}
ActionMap is a set of activities
type ActionType ¶ added in v0.0.19
type ActionType string
ActionType - an activity can be performed on a recource and is relevant for authority checks
const ActionAsteriks ActionType = "*"
type AuthorizationCacheMap ¶ added in v0.0.19
type AuthorizationCacheMap map[string][]AuthorizationStruct
AuthorizationCacheMap contains a Authorizations for nicks
type AuthorizationStruct ¶ added in v0.0.19
type AuthorizationStruct struct { Ressource RessourceType `json:"ressource"` Action ActionMap `json:"action"` }
AuthorizationStruct describes a ressource together with actitivies
type ConfigurationStruct ¶
type ConfigurationStruct struct { ServerId string `json:"serverId"` Port string `json:"port"` EntityTokenValidityHours int `json:"entityTokenValidityHours"` IdentityTokenValiditySeconds int `json:"identityTokenValiditySeconds"` MaxSignInAttempts int `json:"maxSignInAttempts"` }
var Configuration ConfigurationStruct
type DbFile ¶
type DbFile struct { EntityFilePath string EntityDeletedFilePath string EntityTokenFilePath string RolePath string DBPath string RoleFilename string DefaultRoleFilename string }
DbFile - use the filesystem and store json files
func (DbFile) DeleteContentsFromDirectory ¶ added in v0.0.3
func (DbFile) DeleteEntity ¶ added in v0.0.16
func (DbFile) EntityExists ¶
func (*DbFile) Initialize ¶
func (m *DbFile) Initialize()
func (DbFile) ReadEntityList ¶ added in v0.0.10
func (DbFile) ReadPublicEntityByNick ¶ added in v0.0.17
func (m DbFile) ReadPublicEntityByNick(nick string) (*PublicEntity, error)
func (DbFile) SaveEntity ¶
type DbInterface ¶
type DbInterface interface { Initialize() // Entity ReadEntityList() (nicklist []string, e error) ReadEntityByNick(nick string) (*Entity, error) ReadPublicEntityByNick(nick string) (*PublicEntity, error) EntityExists(nick string) bool SaveEntity(entity *Entity) error DeleteEntity(nick string) error // contains filtered or unexported methods }
var Db DbInterface
*******************************************************************
Interface Db (database, persistent storage)
*******************************************************************
type DbTransient ¶ added in v0.0.2
type DbTransient struct {
// contains filtered or unexported fields
}
DbTransient - non-persistent database for testing and demonstration
func (DbTransient) DeleteEntity ¶ added in v0.0.16
func (m DbTransient) DeleteEntity(nick string) error
func (DbTransient) EntityExists ¶ added in v0.0.2
func (m DbTransient) EntityExists(nick string) bool
func (*DbTransient) Initialize ¶ added in v0.0.2
func (m *DbTransient) Initialize()
func (DbTransient) ReadEntityByNick ¶ added in v0.0.2
func (m DbTransient) ReadEntityByNick(nick string) (*Entity, error)
func (DbTransient) ReadEntityList ¶ added in v0.0.10
func (m DbTransient) ReadEntityList() (nicklist []string, e error)
ToDo: Reuqired???
func (DbTransient) ReadPublicEntityByNick ¶ added in v0.0.17
func (m DbTransient) ReadPublicEntityByNick(nick string) (*PublicEntity, error)
func (DbTransient) SaveEntity ¶ added in v0.0.2
func (m DbTransient) SaveEntity(e *Entity) error
type Entity ¶
type Entity struct { Nick string `json:"nick"` PasswordHash string `json:"passwordHash"` SecretHash string `json:"secretHash"` Active bool `json:"active"` WrongPasswordCounter int `json:"wrongPasswordCounter"` LastSignInAttempt time.Time `json:"lastSignInAttempt"` LastSignIn time.Time `json:"lastSignIn"` CreateTimeStamp time.Time `json:"createTimeStamp"` UpdateTimeStamp time.Time `json:"updateTimeStamp"` Roles []RoleIdType `json:"roles"` }
Entity describes a user or a device
type EntityToken ¶
type EntityToken struct { Token string `json:"token"` Pin string `json:"pin"` ValidUntil time.Time `json:"validUntil"` }
*******************************************************************
ENTITY TOKEN Entity Tokens are used to create new entities. The administrator creates an entity token and sends it to the new user. The new user uses the entity token to create an new entity. After the entity was created, the entity token is deleted.
*******************************************************************
func NewEntityToken ¶
func NewEntityToken() (EntityToken, error)
NewEntityToken creates a new entity token (token itself and validity, comming from configuration)
type NewEntityStruct ¶ added in v0.0.10
type NewEntityStruct struct { Nick string `json:"nick"` Password string `json:"password"` Secret string `json:"secret"` PasswordHash string `json:"passwordHash"` SecretHash string `json:"secretHash"` Active bool `json:"active"` WrongPasswordCounter int `json:"wrongPasswordCounter"` LastSignInAttempt time.Time `json:"lastSignInAttempt"` LastSignIn time.Time `json:"lastSignIn"` CreateTimeStamp time.Time `json:"createTimeStamp"` UpdateTimeStamp time.Time `json:"updateTimeStamp"` Roles []RoleIdType `json:"roles"` }
NewEntity contains all fields of Entity but also the password and the secret (not only the hash)
func NewEntity ¶
func NewEntity(entityToken, pin string) (newEntity NewEntityStruct, err error)
NewEntity creates a new entity using an entityToken and PIN
type PublicEntity ¶ added in v0.0.17
type PublicEntity struct { Nick string `json:"nick"` Active bool `json:"active"` WrongPasswordCounter int `json:"wrongPasswordCounter"` LastSignInAttempt time.Time `json:"lastSignInAttempt"` LastSignIn time.Time `json:"lastSignIn"` CreateTimeStamp time.Time `json:"createTimeStamp"` UpdateTimeStamp time.Time `json:"updateTimeStamp"` Roles []RoleIdType `json:"roles"` }
PublicEntity describes a user or a device (without hashes)
type RessourceType ¶ added in v0.0.19
type RessourceType string
RessourceType - a ressource is a thing that is relevant for authorization checks
type RoleBodyStruct ¶ added in v0.0.19
type RoleBodyStruct struct { Authorization []AuthorizationStruct `json:"authorization"` ContainedRole []RoleIdType `json:"containedRoles"` }
RoleBodyStruct contains authorizations contained in the role and also other roles
type RoleCacheMap ¶ added in v0.0.19
type RoleCacheMap map[RoleIdType]RoleBodyStruct
RoleCacheMap combines the Id of the role with the role's body
type RoleIdType ¶ added in v0.0.19
type RoleIdType string
RoleIdType - a role is a collection of Authorization with an Id it can also contain other roles and forms a hierarchical structure of authorizations
Directories ¶
Path | Synopsis |
---|---|
The programm is a simple REST server and handles two request: 1.
|
The programm is a simple REST server and handles two request: 1. |