authentication

package
v0.0.0-...-ff14b99 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2021 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetAuthCookieDomain

func GetAuthCookieDomain(requestHost string, cookieLevel CookieDomainLevel) string

func MiniProgramValidateByAppToken

func MiniProgramValidateByAppToken(code string, appAccessToken string) (*protocol.MiniProgramLoginByAppTokenResponse, error)

Code Exchange Token

func MiniProgramValidateByIDSecret

func MiniProgramValidateByIDSecret(code string, appID string, appSecret string) (*protocol.MiniProgramLoginByIDSecretResponse, error)

Code Exchange Token

func NewDefaultSessionManager

func NewDefaultSessionManager(encryptKey string, client common.DBClient) *defaultSessionManager

NewDefaultSessionManager demo: client := &common.DefaultRedisClient{} err := client.InitDB(map[string]string{"addr": "127.0.0.1:6379"})

if err != nil {
	return fmt.Errorf("init redis error[%v]", err)
}

manager := authentication.NewDefaultSessionManager("DojK2hs*790(", client)

func OpenSSOCodeValidateByAppToken

func OpenSSOCodeValidateByAppToken(ctx context.Context, code string, appAccessToken string) (*protocol.OpenSSOTokenResponse, error)

func OpenSSOCodeValidateByIDSecret

func OpenSSOCodeValidateByIDSecret(ctx context.Context, code string, appID, appSecret string) (*protocol.OpenSSOTokenResponse, error)

func OpenSSOGenerateAuthURL

func OpenSSOGenerateAuthURL(redirectURL string, appID string, state string) string

generate open sso authentication URL

func OpenSSORefreshTokenByAppToken

func OpenSSORefreshTokenByAppToken(ctx context.Context, refreshToken string, appAccessToken string) (*protocol.OpenSSOTokenResponse, error)

func OpenSSORefreshTokenByIDSecret

func OpenSSORefreshTokenByIDSecret(ctx context.Context, refreshToken string, appID, appSecret string) (*protocol.OpenSSOTokenResponse, error)

Types

type AuthMiniProgram

type AuthMiniProgram struct {
	Manager         SessionManager
	ValidPeriod     time.Duration
	AuthCookieLevel CookieDomainLevel
}

func NewAuthMiniProgram

func NewAuthMiniProgram(manager SessionManager, validPeriod time.Duration) *AuthMiniProgram

NewAuthMiniProgram demo: client := &common.DefaultRedisClient{} err := client.InitDB(map[string]string{"addr": "127.0.0.1:6379"})

if err != nil {
	return fmt.Errorf("init redis error[%v]", err)
}

manager := authentication.NewDefaultSessionManager("DojK2hs*790(", client) minaAuth := authentication.NewAuthMiniProgram(manager, time.Hour*24*7)

func (*AuthMiniProgram) Auth

func (a *AuthMiniProgram) Auth(ctx context.Context, sessionKey string) error

func (*AuthMiniProgram) GetCookieDomainLevel

func (a *AuthMiniProgram) GetCookieDomainLevel() CookieDomainLevel

func (*AuthMiniProgram) GetSessionManager

func (a *AuthMiniProgram) GetSessionManager() SessionManager

func (*AuthMiniProgram) GetValidPeriod

func (a *AuthMiniProgram) GetValidPeriod() time.Duration

func (*AuthMiniProgram) Init

func (a *AuthMiniProgram) Init(manager SessionManager, validPeriod time.Duration)

func (*AuthMiniProgram) Login

func (a *AuthMiniProgram) Login(ctx context.Context, code string, appID string, requestHost string) (map[string]*http.Cookie, error)

func (*AuthMiniProgram) Logout

func (a *AuthMiniProgram) Logout(ctx context.Context, appID string, requestHost string) (map[string]*http.Cookie, error)

func (*AuthMiniProgram) SetCookieDomainLevel

func (a *AuthMiniProgram) SetCookieDomainLevel(cookieLevel CookieDomainLevel)

type AuthUserInfo

type AuthUserInfo struct {
	Token TokenInfo
	User  UserInfo
	Extra map[string]string
}

type Authentication

type Authentication interface {
	Init(manager SessionManager, validPeriod time.Duration)

	Login(ctx context.Context, code string, appID string, requestHost string) (map[string]*http.Cookie, error)
	Auth(ctx context.Context, sessionKey string) error
	Logout(ctx context.Context, appID string, requestHost string) (map[string]*http.Cookie, error)

	// auth cookie level, DomainLevelZero is default
	SetCookieDomainLevel(cookieLevel CookieDomainLevel)
	GetCookieDomainLevel() CookieDomainLevel

	// get valid period
	GetValidPeriod() time.Duration

	// get session manager
	GetSessionManager() SessionManager
}

type CookieDomainLevel

type CookieDomainLevel int
const (
	DomainLevelZero CookieDomainLevel = 0 //current host
	DomainLevelOne  CookieDomainLevel = 1 //First-level domain name
	DomainLevelTwo  CookieDomainLevel = 2 //Second-level domain name
)

type SessionManager

type SessionManager interface {
	SetEncryptKey(encryptKey string)
	GetEncryptKey() string

	GenerateSessionKeyName(appID string) string
	GenerateSessionKey() string

	SetAuthUserInfo(authUser *AuthUserInfo, validPeriod time.Duration) (string, error) // return sessionKey, err
	GetAuthUserInfo(sessionKey string) (*AuthUserInfo, error)
}

type TokenInfo

type TokenInfo struct {
	AccessToken  string `json:"access_token"` // user_access_token
	TokenType    string `json:"token_type"`
	ExpiresIn    int    `json:"expires_in"`
	RefreshToken string `json:"refresh_token"`
}

type UserInfo

type UserInfo struct {
	TenantKey  string `json:"tenant_key"`
	OpenID     string `json:"open_id"`
	EmployeeID string `json:"employee_id"`
}

Jump to

Keyboard shortcuts

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