session

package
v6.0.15 Latest Latest
Warning

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

Go to latest
Published: Jun 12, 2020 License: BSD-3-Clause Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	IdentityPrefix = "identity-"
	IssuerPrefix   = "virgil-"
)

jwt body prefixes

View Source
const (
	VirgilContentType = "virgil-jwt;v=1"
	JwtType           = "JWT"
)

jwt header constant

Variables

View Source
var (
	ErrIdentityIsMandatory = errors.New("identity is mandatory")
	ErrContextIsMandatory  = errors.New("token context is mandatory")
	ErrJWTInvalid          = errors.New("jwt invalid")
	ErrJWTTokenIsMandatory = errors.New("jwt token is mandatory")
	ErrJWTExpired          = errors.New("jwt token is expired")
	ErrJWTParseFailed      = errors.New("jwt parse failed")
	ErrJWTIncorrect        = errors.New("jwt body does not contain virgil prefix")
)

Functions

This section is empty.

Types

type AccessToken

type AccessToken interface {
	String() string
	Identity() (string, error)
}

type AccessTokenProvider

type AccessTokenProvider interface {
	GetToken(context *TokenContext) (AccessToken, error)
}

type AccessTokenSigner

type AccessTokenSigner interface {
	GenerateTokenSignature(data []byte, privateKey crypto.PrivateKey) ([]byte, error)
	VerifyTokenSignature(data []byte, signature []byte, publicKey crypto.PublicKey) error
	GetAlgorithm() string
}

type CachingJwtProvider

type CachingJwtProvider struct {
	RenewTokenCallback func(context *TokenContext) (*Jwt, error)
	Jwt                *Jwt
	// contains filtered or unexported fields
}

func NewCachingJwtProvider

func NewCachingJwtProvider(renewTokenCallback func(context *TokenContext) (*Jwt, error)) *CachingJwtProvider

func NewCachingStringJwtProvider

func NewCachingStringJwtProvider(renewTokenCallback func(context *TokenContext) (string, error)) *CachingJwtProvider

func (*CachingJwtProvider) GetToken

func (c *CachingJwtProvider) GetToken(context *TokenContext) (AccessToken, error)

type CallbackJwtProvider

type CallbackJwtProvider struct {
	GetTokenCallback func(context *TokenContext) (*Jwt, error)
}

func NewCallbackJwtProvider

func NewCallbackJwtProvider(callback func(context *TokenContext) (*Jwt, error)) *CallbackJwtProvider

func NewCallbackStringJwtProvider

func NewCallbackStringJwtProvider(renewTokenCallback func(context *TokenContext) (string, error)) *CallbackJwtProvider

func (*CallbackJwtProvider) GetToken

func (c *CallbackJwtProvider) GetToken(context *TokenContext) (AccessToken, error)

type ConstAccessTokenProvider

type ConstAccessTokenProvider struct {
	AccessToken AccessToken
}

func (*ConstAccessTokenProvider) GetToken

func (a *ConstAccessTokenProvider) GetToken(context *TokenContext) (AccessToken, error)

type Crypto

type Crypto interface {
	Sign(data []byte, privateKey crypto.PrivateKey) ([]byte, error)
	VerifySignature(data []byte, sign []byte, publicKey crypto.PublicKey) error
}
var (
	DefaultCrypto Crypto = &crypto.Crypto{}
)

type GeneratorJwtProvider

type GeneratorJwtProvider struct {
	// contains filtered or unexported fields
}

func NewGeneratorJwtProvider

func NewGeneratorJwtProvider(generator JwtGenerator, options ...GeneratorJwtProviderOption) *GeneratorJwtProvider

func (*GeneratorJwtProvider) GetToken

func (g *GeneratorJwtProvider) GetToken(context *TokenContext) (AccessToken, error)

type GeneratorJwtProviderOption

type GeneratorJwtProviderOption func(p *GeneratorJwtProvider)

func SetGeneratorJwtProviderAddtionalData

func SetGeneratorJwtProviderAddtionalData(additionalData map[string]interface{}) GeneratorJwtProviderOption

func SetGeneratorJwtProviderDefaultIdentity

func SetGeneratorJwtProviderDefaultIdentity(identity string) GeneratorJwtProviderOption

type Jwt

type Jwt struct {
	BodyContent   JwtBodyContent
	HeaderContent JwtHeaderContent
	Signature     []byte
	// contains filtered or unexported fields
}

func JwtFromString

func JwtFromString(token string) (*Jwt, error)

func NewJwt

func NewJwt(header JwtHeaderContent, body JwtBodyContent) *Jwt

NewJwt return new instance of Jwt Note: JwtBodyContent is huge params but it's never used other place nolint: gocritic

func (*Jwt) Identity

func (j *Jwt) Identity() (string, error)

func (*Jwt) IsExpired

func (j *Jwt) IsExpired() error

func (*Jwt) IsExpiredDelta

func (j *Jwt) IsExpiredDelta(delta time.Duration) error

IsExpiredDelta returns error if token expires delta time before it's expiry date

func (*Jwt) String

func (j *Jwt) String() string

type JwtBodyContent

type JwtBodyContent struct {
	AppID          string                 `json:"-"`
	Identity       string                 `json:"-"`
	Issuer         string                 `json:"iss"`
	Subject        string                 `json:"sub"`
	IssuedAt       int64                  `json:"iat"`
	ExpiresAt      int64                  `json:"exp"`
	AdditionalData map[string]interface{} `json:"ada,omitempty"`
}

type JwtGenerator

type JwtGenerator struct {
	AppKey            crypto.PrivateKey
	AppKeyID          string
	AppID             string
	AccessTokenSigner AccessTokenSigner
	TTL               time.Duration
}

func (*JwtGenerator) GenerateToken

func (j *JwtGenerator) GenerateToken(identity string, additionalData map[string]interface{}) (*Jwt, error)

func (*JwtGenerator) Validate

func (j *JwtGenerator) Validate() error

type JwtHeaderContent

type JwtHeaderContent struct {
	Algorithm   string `json:"alg"`
	Type        string `json:"typ"`
	ContentType string `json:"cty"`
	AppKeyID    string `json:"kid"`
}

type JwtVerifier

type JwtVerifier struct {
	// contains filtered or unexported fields
}

func NewJwtVerifier

func NewJwtVerifier(appPublicKey crypto.PublicKey, appPublicKeyID string, accessTokenSigner AccessTokenSigner) *JwtVerifier

func (*JwtVerifier) Validate

func (j *JwtVerifier) Validate() error

func (*JwtVerifier) VerifyToken

func (j *JwtVerifier) VerifyToken(jwtToken *Jwt) error

type TokenContext

type TokenContext struct {
	Identity    string
	Operation   string
	Service     string
	ForceReload bool
}

type VirgilAccessTokenSigner

type VirgilAccessTokenSigner struct {
	Crypto Crypto
}

func (*VirgilAccessTokenSigner) GenerateTokenSignature

func (t *VirgilAccessTokenSigner) GenerateTokenSignature(data []byte, privateKey crypto.PrivateKey) ([]byte, error)

func (*VirgilAccessTokenSigner) GetAlgorithm

func (t *VirgilAccessTokenSigner) GetAlgorithm() string

func (*VirgilAccessTokenSigner) VerifyTokenSignature

func (t *VirgilAccessTokenSigner) VerifyTokenSignature(data []byte, signature []byte, publicKey crypto.PublicKey) error

Jump to

Keyboard shortcuts

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