core

package
v0.8.4 Latest Latest
Warning

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

Go to latest
Published: Oct 4, 2021 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CredTypePassword = 1
	CredTypeTOTP     = 2
)

Variables

View Source
var StandardClaims = map[string][]struct {
	Name string
	Desc string
}{
	"openid": {
		{Name: "sub", Desc: "Subject"},
	},
	"profile": {
		{Name: "name", Desc: "Name"},
		{Name: "given_name", Desc: "Given Name"},
		{Name: "family_name", Desc: "Family Name"},
		{Name: "middle_name", Desc: "Middle Name"},
		{Name: "nickname", Desc: "Nickname"},
		{Name: "preferred_username", Desc: "Preferred Username"},
		{Name: "profile", Desc: "Profile"},
		{Name: "picture", Desc: "Picture"},
		{Name: "website", Desc: "Website"},
		{Name: "gender", Desc: "Gender"},
		{Name: "birthdate", Desc: "Birth Date"},
		{Name: "zoneinfo", Desc: "Zone Info"},
		{Name: "locale", Desc: "Locale"},
	},
	"email": {
		{Name: "email", Desc: "Email"},
		{Name: "email_verified", Desc: "Email Verified"},
	},
	"phone": {
		{Name: "phone_number", Desc: "Phone Number"},
		{Name: "phone_number_verified", Desc: "Phone Number Verified"},
	},
	"address": {
		{Name: "address", Desc: "Address"},
	},
}
View Source
var StandardScopes = map[string]string{
	"openid":  "OpenID Scope",
	"profile": "Profile Scope",
	"email":   "Email Scope",
	"phone":   "Phone Scope",
	"address": "Address Scope",
}

Functions

func GenerateRandom

func GenerateRandom(numberOnly bool, length uint8) (string, error)

func GenerateRandomBytes

func GenerateRandomBytes(length uint8) ([]byte, error)

func InitializeDefaultScope

func InitializeDefaultScope(db *gorm.DB) error

func SetupDBStructure

func SetupDBStructure(ormDB *gorm.DB, drop bool, force bool) error

func SetupDemoData

func SetupDemoData(ormDB *gorm.DB, config *Config, sdkConfig *oidcsdk.Config, redirectUri string) error

Types

type Config

type Config struct {
	EncryptionKey          string
	MaxInvalidLoginAttempt uint
	InvalidAttemptWindow   time.Duration
	TOTPSecretLength       uint
	PasswordCost           int
}

type IClaimOperations

type IClaimOperations interface {
	CreateClaim(ctx context.Context, name string, description *string) (id uint, err error)
	FindClaimByName(ctx context.Context, name string) (*models.ClaimModel, error)
	GetClaim(ctx context.Context, id uint) (*models.ClaimModel, error)
	GetAllClaims(ctx context.Context, page uint, pageSize uint) ([]*models.ClaimModel, uint, error)
	UpdateClaim(ctx context.Context, id uint, description *string) error
	DeleteClaim(ctx context.Context, id uint) error
}

type ISPCommonService

type ISPCommonService interface {
	CreateSP(ctx context.Context, clientName string, description *string, metadata *models.ServiceProviderMetadata) (id uint, err error)
	UpdateSP(ctx context.Context, id uint, public bool, metadata *models.ServiceProviderMetadata) (err error)
	PatchSP(ctx context.Context, id uint, metadata *models.ServiceProviderMetadata) (err error)
	DeleteSP(ctx context.Context, id uint) (err error)
}

type ISPCredentialService

type ISPCredentialService interface {
	ResetClientCredentials(ctx context.Context, id uint) (clientId, clientSecret string, err error)
	ValidateClientCredentials(ctx context.Context, clientId, clientSecret string) (id uint, err error)
	ValidateSecretSignature(ctx context.Context, token string) (id uint, err error)
	ValidatePrivateKeySignature(ctx context.Context, token string) (id uint, err error)
}

type ISPQueryService

type ISPQueryService interface {
	GetSP(ctx context.Context, id uint) (sp *models.ServiceProviderModel, err error)
	FindSPByClientId(ctx context.Context, clientId string) (sp *models.ServiceProviderModel, err error)
	FindSPByName(ctx context.Context, name string) (sp *models.ServiceProviderModel, err error)
	FindAllSP(ctx context.Context, page uint, pageSize uint) (sps []models.ServiceProviderModel, count uint, err error)
}

type ISPUpdateService

type ISPUpdateService interface {
	ActivateSP(ctx context.Context, id uint) error
	DeactivateSP(ctx context.Context, id uint) error
}

type IScopeClaimStoreService

type IScopeClaimStoreService interface {
	IScopeOperations
	IClaimOperations
}

type IScopeOperations

type IScopeOperations interface {
	CreateScope(ctx context.Context, name string, description *string) (id uint, err error)
	FindScopeByName(ctx context.Context, name string) (*models.ScopeModel, error)
	GetScope(ctx context.Context, id uint) (*models.ScopeModel, error)
	GetAllScopes(ctx context.Context, page uint, pageSize uint) ([]*models.ScopeModel, uint, error)
	UpdateScope(ctx context.Context, id uint, description *string) error
	DeleteScope(ctx context.Context, id uint) error
	AddClaimToScope(ctx context.Context, scopeId uint, claimId uint) error
	RemoveClaimFromScope(ctx context.Context, scopeId uint, claimId uint) error
}

type ISecretChannelManager

type ISecretChannelManager interface {
	CreateChannel(ctx context.Context, name string, algorithm string, use string, validityDay uint) (uint, error)
	GetAllChannels(ctx context.Context, page uint, pageSize uint) ([]*models.SecretChannelModel, uint, error)
	GetChannel(ctx context.Context, channelId uint) (*models.SecretChannelModel, error)
	GetChannelByName(ctx context.Context, name string) (*models.SecretChannelModel, error)
	GetChannelByAlgoUse(ctx context.Context, algo string, use string) (*models.SecretChannelModel, error)
	DeleteChannel(ctx context.Context, channelId uint) error
	RenewSecret(ctx context.Context, channelId uint) error
}

type ISecretStoreService

type ISecretStoreService interface {
	oidcsdk.ISecretStore
	ISecretChannelManager
}

type ITextDecrypts

type ITextDecrypts interface {
	DecryptText(ctx context.Context, cypherText string) (text string, err error)
}

type ITextEncrypts

type ITextEncrypts interface {
	EncryptText(ctx context.Context, text string) (cypherText string, err error)
}

type ITokenStoreService

type ITokenStoreService interface {
	oidcsdk.ITokenStore
}

type IUserChangeService

type IUserChangeService interface {
	ActivateUser(ctx context.Context, id uint) error
	DeactivateUser(ctx context.Context, id uint) error
	UsernameAvailable(ctx context.Context, username string) (available bool)
	ChangeUsername(ctx context.Context, id uint, username string) (err error)
	InitiateEmailChange(ctx context.Context, id uint, email string) (code string, err error)
	CompleteEmailChange(ctx context.Context, id uint, code string) (err error)
}

type IUserCommonService

type IUserCommonService interface {
	CreateUser(ctx context.Context, username string, email string, metadata *models.UserMetadata) (id uint, err error)
	UpdateUser(ctx context.Context, id uint, metadata *models.UserMetadata) (err error)
	PatchUser(ctx context.Context, id uint, metadata *models.UserMetadata) (err error)
	DeleteUser(ctx context.Context, id uint) (err error)
}

type IUserCredentialsService

type IUserCredentialsService interface {
	SetPassword(ctx context.Context, id uint, password string) error
	GenerateTOTP(ctx context.Context, id uint, issuer string) (img image.Image, secret string, err error)
	ValidatePassword(ctx context.Context, id uint, password string) (err error)
	ValidateTOTP(ctx context.Context, id uint, code string) (err error)
}

type IUserOTPService

type IUserOTPService interface {
	GenerateUserOTP(ctx context.Context, id uint, length uint8) (code string, err error)
	ValidateOTP(ctx context.Context, id uint, code string) (err error)
}

type IUserQueryService

type IUserQueryService interface {
	GetUser(ctx context.Context, id uint) (user *models.UserModel, err error)
	FindUserByUsername(ctx context.Context, username string) (*models.UserModel, error)
	FindUserByEmail(ctx context.Context, email string) (*models.UserModel, error)
	FindAllUser(ctx context.Context, page uint, pageSize uint) ([]models.UserModel, uint, error)
}

type MigrateAware

type MigrateAware interface {
	AutoMigrate(db gorm.Migrator) error
}

type NoOpTextEncrypt

type NoOpTextEncrypt struct{}

func NewNoOpTextEncrypt

func NewNoOpTextEncrypt() *NoOpTextEncrypt

func (NoOpTextEncrypt) DecryptText

func (m NoOpTextEncrypt) DecryptText(_ context.Context, cypherText string) (text string, err error)

func (NoOpTextEncrypt) EncryptText

func (NoOpTextEncrypt) EncryptText(_ context.Context, text string) (cypherText string, err error)

type SPStoreServiceImpl

type SPStoreServiceImpl struct {
	Db      *gorm.DB
	TextEnc ITextEncrypts
	TextDec ITextDecrypts
}

func NewSPStoreServiceImpl

func NewSPStoreServiceImpl(db *gorm.DB, dec ITextDecrypts, enc ITextEncrypts) *SPStoreServiceImpl

func (*SPStoreServiceImpl) ActivateSP

func (s *SPStoreServiceImpl) ActivateSP(ctx context.Context, id uint) error

func (*SPStoreServiceImpl) CreateSP

func (s *SPStoreServiceImpl) CreateSP(ctx context.Context, clientName string, description *string, metadata *models.ServiceProviderMetadata) (id uint, err error)

func (*SPStoreServiceImpl) DeactivateSP

func (s *SPStoreServiceImpl) DeactivateSP(ctx context.Context, id uint) error

func (*SPStoreServiceImpl) DeleteSP

func (s *SPStoreServiceImpl) DeleteSP(ctx context.Context, id uint) (err error)

func (*SPStoreServiceImpl) FetchClientProfile

func (s *SPStoreServiceImpl) FetchClientProfile(_ context.Context, clientID string) oidcsdk.RequestProfile

func (*SPStoreServiceImpl) FindAllSP

func (s *SPStoreServiceImpl) FindAllSP(ctx context.Context, page uint, pageSize uint) (sps []models.ServiceProviderModel, count uint, err error)

func (*SPStoreServiceImpl) FindSPByClientId

func (s *SPStoreServiceImpl) FindSPByClientId(ctx context.Context, clientId string) (sp *models.ServiceProviderModel, err error)

func (*SPStoreServiceImpl) FindSPByName

func (s *SPStoreServiceImpl) FindSPByName(ctx context.Context, name string) (sp *models.ServiceProviderModel, err error)

func (*SPStoreServiceImpl) GetClient

func (s *SPStoreServiceImpl) GetClient(ctx context.Context, clientID string) (client oidcsdk.IClient, err error)

func (*SPStoreServiceImpl) GetSP

func (*SPStoreServiceImpl) PatchSP

func (s *SPStoreServiceImpl) PatchSP(ctx context.Context, id uint, metadata *models.ServiceProviderMetadata) (err error)

func (*SPStoreServiceImpl) ResetClientCredentials

func (s *SPStoreServiceImpl) ResetClientCredentials(ctx context.Context, id uint) (clientId, clientSecret string, err error)

func (*SPStoreServiceImpl) UpdateSP

func (s *SPStoreServiceImpl) UpdateSP(ctx context.Context, id uint, public bool, metadata *models.ServiceProviderMetadata) (err error)

func (*SPStoreServiceImpl) ValidateClientCredentials

func (s *SPStoreServiceImpl) ValidateClientCredentials(ctx context.Context, clientId, clientSecret string) (id uint, err error)

func (*SPStoreServiceImpl) ValidatePrivateKeySignature

func (s *SPStoreServiceImpl) ValidatePrivateKeySignature(ctx context.Context, token string) (id uint, err error)

func (*SPStoreServiceImpl) ValidateSecretSignature

func (s *SPStoreServiceImpl) ValidateSecretSignature(ctx context.Context, token string) (id uint, err error)

type ScopeClaimStoreServiceImpl

type ScopeClaimStoreServiceImpl struct {
	Db *gorm.DB
}

func NewScopeClaimStoreServiceImpl

func NewScopeClaimStoreServiceImpl(db *gorm.DB) *ScopeClaimStoreServiceImpl

func (*ScopeClaimStoreServiceImpl) AddClaimToScope

func (s *ScopeClaimStoreServiceImpl) AddClaimToScope(ctx context.Context, scopeId uint, claimId uint) error

func (*ScopeClaimStoreServiceImpl) CreateClaim

func (s *ScopeClaimStoreServiceImpl) CreateClaim(ctx context.Context, name string, description *string) (id uint, err error)

func (*ScopeClaimStoreServiceImpl) CreateScope

func (s *ScopeClaimStoreServiceImpl) CreateScope(ctx context.Context, name string, description *string) (id uint, err error)

func (*ScopeClaimStoreServiceImpl) DeleteClaim

func (s *ScopeClaimStoreServiceImpl) DeleteClaim(ctx context.Context, id uint) error

func (*ScopeClaimStoreServiceImpl) DeleteScope

func (s *ScopeClaimStoreServiceImpl) DeleteScope(ctx context.Context, id uint) error

func (*ScopeClaimStoreServiceImpl) FindClaimByName

func (s *ScopeClaimStoreServiceImpl) FindClaimByName(ctx context.Context, name string) (*models.ClaimModel, error)

func (*ScopeClaimStoreServiceImpl) FindScopeByName

func (s *ScopeClaimStoreServiceImpl) FindScopeByName(ctx context.Context, name string) (*models.ScopeModel, error)

func (*ScopeClaimStoreServiceImpl) GetAllClaims

func (s *ScopeClaimStoreServiceImpl) GetAllClaims(ctx context.Context, page uint, pageSize uint) ([]*models.ClaimModel, uint, error)

func (*ScopeClaimStoreServiceImpl) GetAllScopes

func (s *ScopeClaimStoreServiceImpl) GetAllScopes(ctx context.Context, page uint, pageSize uint) ([]*models.ScopeModel, uint, error)

func (*ScopeClaimStoreServiceImpl) GetClaim

func (*ScopeClaimStoreServiceImpl) GetScope

func (*ScopeClaimStoreServiceImpl) RemoveClaimFromScope

func (s *ScopeClaimStoreServiceImpl) RemoveClaimFromScope(ctx context.Context, scopeId uint, claimId uint) error

func (*ScopeClaimStoreServiceImpl) UpdateClaim

func (s *ScopeClaimStoreServiceImpl) UpdateClaim(ctx context.Context, id uint, description *string) error

func (*ScopeClaimStoreServiceImpl) UpdateScope

func (s *ScopeClaimStoreServiceImpl) UpdateScope(ctx context.Context, id uint, description *string) error

type SecretStoreServiceImpl

type SecretStoreServiceImpl struct {
	Db *gorm.DB
}

func NewSecretStoreServiceImpl

func NewSecretStoreServiceImpl(db *gorm.DB) *SecretStoreServiceImpl

func (*SecretStoreServiceImpl) CreateChannel

func (s *SecretStoreServiceImpl) CreateChannel(ctx context.Context, name string, algorithm string, use string, validityDay uint) (uint, error)

func (*SecretStoreServiceImpl) DeleteChannel

func (s *SecretStoreServiceImpl) DeleteChannel(ctx context.Context, channelId uint) error

func (*SecretStoreServiceImpl) GetAllChannels

func (s *SecretStoreServiceImpl) GetAllChannels(ctx context.Context, page uint, pageSize uint) ([]*models.SecretChannelModel, uint, error)

func (*SecretStoreServiceImpl) GetAllSecrets

func (s *SecretStoreServiceImpl) GetAllSecrets(ctx context.Context) (*jose.JSONWebKeySet, error)

func (*SecretStoreServiceImpl) GetChannel

func (s *SecretStoreServiceImpl) GetChannel(ctx context.Context, channelId uint) (*models.SecretChannelModel, error)

func (*SecretStoreServiceImpl) GetChannelByAlgoUse

func (s *SecretStoreServiceImpl) GetChannelByAlgoUse(ctx context.Context, algo string, use string) (*models.SecretChannelModel, error)

func (*SecretStoreServiceImpl) GetChannelByName

func (s *SecretStoreServiceImpl) GetChannelByName(ctx context.Context, name string) (*models.SecretChannelModel, error)

func (*SecretStoreServiceImpl) RenewSecret

func (s *SecretStoreServiceImpl) RenewSecret(ctx context.Context, channelId uint) error

type TokenStoreServiceImpl

type TokenStoreServiceImpl struct {
	Db *gorm.DB
}

func NewTokenStoreServiceImpl

func NewTokenStoreServiceImpl(db *gorm.DB) *TokenStoreServiceImpl

func (*TokenStoreServiceImpl) GetProfileWithAccessTokenSign

func (ts *TokenStoreServiceImpl) GetProfileWithAccessTokenSign(ctx context.Context, signature string) (oidcsdk.RequestProfile, string, error)

func (*TokenStoreServiceImpl) GetProfileWithAuthCodeSign

func (ts *TokenStoreServiceImpl) GetProfileWithAuthCodeSign(ctx context.Context, signature string) (oidcsdk.RequestProfile, string, error)

func (*TokenStoreServiceImpl) GetProfileWithRefreshTokenSign

func (ts *TokenStoreServiceImpl) GetProfileWithRefreshTokenSign(ctx context.Context, signature string) (oidcsdk.RequestProfile, string, error)

func (*TokenStoreServiceImpl) InvalidateWithRequestID

func (ts *TokenStoreServiceImpl) InvalidateWithRequestID(ctx context.Context, reqID string, what uint8) (err error)

func (*TokenStoreServiceImpl) StoreTokenProfile

func (ts *TokenStoreServiceImpl) StoreTokenProfile(ctx context.Context, reqId string, signatures oidcsdk.ITokenSignatures, profile oidcsdk.RequestProfile) (err error)

type UserStoreServiceImpl

type UserStoreServiceImpl struct {
	Db     *gorm.DB
	Config *Config
}

func NewUserStoreServiceImpl

func NewUserStoreServiceImpl(db *gorm.DB, config *Config) *UserStoreServiceImpl

func (*UserStoreServiceImpl) ActivateUser

func (u *UserStoreServiceImpl) ActivateUser(ctx context.Context, id uint) error

func (*UserStoreServiceImpl) Authenticate

func (u *UserStoreServiceImpl) Authenticate(ctx context.Context, username string, credential []byte) (err error)

func (*UserStoreServiceImpl) ChangeUsername

func (u *UserStoreServiceImpl) ChangeUsername(ctx context.Context, id uint, username string) (err error)

func (*UserStoreServiceImpl) CompleteEmailChange

func (u *UserStoreServiceImpl) CompleteEmailChange(ctx context.Context, id uint, code string) error

func (*UserStoreServiceImpl) CreateUser

func (u *UserStoreServiceImpl) CreateUser(ctx context.Context, username string, email string, metadata *models.UserMetadata) (id uint, err error)

func (*UserStoreServiceImpl) DeactivateUser

func (u *UserStoreServiceImpl) DeactivateUser(ctx context.Context, id uint) error

func (*UserStoreServiceImpl) DeleteUser

func (u *UserStoreServiceImpl) DeleteUser(ctx context.Context, id uint) (err error)

func (*UserStoreServiceImpl) FetchUserProfile

func (u *UserStoreServiceImpl) FetchUserProfile(_ context.Context, username string) oidcsdk.RequestProfile

func (*UserStoreServiceImpl) FindAllUser

func (u *UserStoreServiceImpl) FindAllUser(ctx context.Context, page uint, pageSize uint) ([]models.UserModel, uint, error)

func (*UserStoreServiceImpl) FindUserByEmail

func (u *UserStoreServiceImpl) FindUserByEmail(ctx context.Context, email string) (*models.UserModel, error)

func (*UserStoreServiceImpl) FindUserByUsername

func (u *UserStoreServiceImpl) FindUserByUsername(ctx context.Context, username string) (*models.UserModel, error)

func (*UserStoreServiceImpl) GenerateTOTP

func (u *UserStoreServiceImpl) GenerateTOTP(ctx context.Context, id uint, issuer string) (image.Image, string, error)

func (*UserStoreServiceImpl) GenerateUserOTP

func (u *UserStoreServiceImpl) GenerateUserOTP(ctx context.Context, id uint, length uint8) (code string, err error)

func (*UserStoreServiceImpl) GetClaims

func (u *UserStoreServiceImpl) GetClaims(ctx context.Context, username string, scopes oidcsdk.Arguments, claimsIDs []string) (map[string]interface{}, error)

func (*UserStoreServiceImpl) GetUser

func (u *UserStoreServiceImpl) GetUser(ctx context.Context, id uint) (*models.UserModel, error)

func (*UserStoreServiceImpl) InitiateEmailChange

func (u *UserStoreServiceImpl) InitiateEmailChange(ctx context.Context, id uint, email string) (code string, err error)

func (*UserStoreServiceImpl) IsConsentRequired

func (*UserStoreServiceImpl) PatchUser

func (u *UserStoreServiceImpl) PatchUser(ctx context.Context, id uint, metadata *models.UserMetadata) (err error)

func (*UserStoreServiceImpl) SetPassword

func (u *UserStoreServiceImpl) SetPassword(ctx context.Context, id uint, password string) (err error)

func (*UserStoreServiceImpl) StoreConsent

func (*UserStoreServiceImpl) UpdateUser

func (u *UserStoreServiceImpl) UpdateUser(ctx context.Context, id uint, metadata *models.UserMetadata) (err error)

func (*UserStoreServiceImpl) UsernameAvailable

func (u *UserStoreServiceImpl) UsernameAvailable(ctx context.Context, username string) (available bool)

func (*UserStoreServiceImpl) ValidateOTP

func (u *UserStoreServiceImpl) ValidateOTP(ctx context.Context, id uint, code string) (err error)

func (*UserStoreServiceImpl) ValidatePassword

func (u *UserStoreServiceImpl) ValidatePassword(ctx context.Context, id uint, password string) error

func (*UserStoreServiceImpl) ValidateTOTP

func (u *UserStoreServiceImpl) ValidateTOTP(ctx context.Context, id uint, code string) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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