storage

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Jun 5, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AuthRequest

type AuthRequest struct {
	RequestID string `json:"request_id"`
	UserID    string `json:"user_id"`

	Scopes       []string `json:"scope"`
	ResponseType string   `json:"response_type"`
	ClientID     string   `json:"client_id"`
	RedirectURI  string   `json:"redirect_uri"`

	State string `json:"state"`
	Nonce string `json:"nonce"`

	ResponseMode string         `json:"response_mode"`
	Display      string         `json:"display"`
	Prompt       []string       `json:"prompt"`
	MaxAge       int64          `json:"max_age"`
	UILocales    []language.Tag `json:"ui_locales"`
	LoginHint    string         `json:"login_hint"`
	ACRValues    []string       `json:"acr_values"`

	CodeChallenge       string `json:"code_challenge"`
	CodeChallengeMethod string `json:"code_challenge_method"`

	Done     bool     `json:"done"`
	Audience []string `json:"audience"`
}

type IClient

type IClient interface {
	GetClientID() string
	GetClientSecret() string
	RedirectURIs() []string
	Scopes() []string
	ApplicationType() constant.ApplicationType
	AuthMethod() string
	ResponseTypes() []string
	GrantTypes() []string
	LoginURL(ctx context.Context, req AuthRequest) string
	EndSessionURL(ctx context.Context, req model.EndSessionModel) (string, error)
	AccessTokenTransferType() string
	IDTokenLifetime() time.Duration
	AccessTokenLifetime() time.Duration
	RefreshTokenLifetime() time.Duration

	AllowInsecure() bool
	RestrictAdditionalIdTokenScopes() func(scopes []string) []string
	RestrictAdditionalAccessTokenScopes() func(scopes []string) []string

	IDTokenUserinfoClaimsAssertion() bool
	ClockSkew() time.Duration

	JoseVerificationKey(assertionType constant.AssertionType) (verificationKey interface{})
}

type IStorage

type IStorage interface {
	SetLogger(logger log.Logger)
	GetClientByClientID(ctx context.Context, clientID string) (IClient, error)

	SaveAuthRequest(ctx context.Context, authReq AuthRequest) error

	AuthRequestBindCallbackData(ctx context.Context, requestID, userID string) (*AuthRequest, error)
	AuthRequestByCode(ctx context.Context, code string) (*AuthRequest, error)
	AuthRequestByRequestID(ctx context.Context, requestID string) (*AuthRequest, error)

	AuthRequestByRefreshToken(ctx context.Context, refreshToken string) (*TokenModel, *AuthRequest, error)
	AuthRequestByTokenID(ctx context.Context, tokenID string) (*TokenModel, *AuthRequest, error)

	AuthRequestByJWTClientToken(ctx context.Context, client IClient, token model.JWTClientTokenClaims) (*AuthRequest, error)

	SaveAuthRequestCode(ctx context.Context, requestID, code string) error
	SaveTokenModel(ctx context.Context, tokenModel TokenModel) error
	UpdateTokenModelByRefreshToken(ctx context.Context, tokenModel TokenModel) error

	SetUserinfoFromScopes(ctx context.Context, authReq AuthRequest, client IClient, scopes []string) (*model.UserInfo, error)
	SetIntrospectUserinfo(ctx context.Context, authReq AuthRequest, accessTokenClaims model.AccessTokenClaims) (*model.UserInfo, error)
	SetUserinfo(ctx context.Context, authReq AuthRequest, accessTokenClaims model.AccessTokenClaims, origin string) (*model.UserInfo, error)

	RevokeRefreshToken(ctx context.Context, refreshToken string) error
	RevokeAccessToken(ctx context.Context, accessTokenClaims model.AccessTokenClaims) error
}

type TokenModel

type TokenModel struct {
	RequestID              string    `json:"request_id"`
	TokenID                string    `json:"token_id"`
	UserID                 string    `json:"user_id"`
	RefreshToken           string    `json:"refresh_token"`
	RefreshTokenExpiration time.Time `json:"refresh_token_expiration" form:"refresh_token_expiration"`
	AccessTokenExpiration  time.Time `json:"access_token_expiration" form:"access_token_expiration"`
	AuthTime               time.Time `json:"auth_time"`
}

Jump to

Keyboard shortcuts

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