service

package
v0.0.0-...-bae3b6f Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2022 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrClientNotExist = errors.New("clientId is not exist")
	ErrClientSecret   = errors.New("invalid clientSecret")
)
View Source
var (
	ErrNotSupportGrantType               = errors.New("grant type is not supported")
	ErrNotSupportOperation               = errors.New("no support operation")
	ErrInvalidUsernameAndPasswordRequest = errors.New("invalid username, password")
	ErrInvalidTokenRequest               = errors.New("invalid token")
	ErrExpiredToken                      = errors.New("token is expired")
)
View Source
var (
	ErrUserNotExist = errors.New("username is not exist")
	ErrPassword     = errors.New("invalid password")
)

Functions

This section is empty.

Types

type ClientDetailsService

type ClientDetailsService interface {
	GetClientDetailByClientId(ctx context.Context, clientId string, clientSecret string) (*model.ClientDetails, error)
}

Service Define a service interface

type CommonService

type CommonService struct {
}

func NewCommonService

func NewCommonService() *CommonService

func (*CommonService) AdminData

func (s *CommonService) AdminData(username string) string

func (*CommonService) HealthCheck

func (s *CommonService) HealthCheck() bool

HealthCheck implement Service method 用于检查服务的健康状态,这里仅仅返回true

func (*CommonService) SimpleData

func (s *CommonService) SimpleData(username string) string

type ComposeTokenGranter

type ComposeTokenGranter struct {
	TokenGrantDict map[string]TokenGranter
}

func (*ComposeTokenGranter) Grant

func (tokenGranter *ComposeTokenGranter) Grant(ctx context.Context, grantType string, client *ClientDetails, reader *http.Request) (*OAuth2Token, error)

type DefaultTokenService

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

func (*DefaultTokenService) CreateAccessToken

func (tokenService *DefaultTokenService) CreateAccessToken(oauth2Details *OAuth2Details) (*OAuth2Token, error)

func (*DefaultTokenService) GetAccessToken

func (tokenService *DefaultTokenService) GetAccessToken(details *OAuth2Details) (*OAuth2Token, error)

func (*DefaultTokenService) GetOAuth2DetailsByAccessToken

func (tokenService *DefaultTokenService) GetOAuth2DetailsByAccessToken(tokenValue string) (*OAuth2Details, error)

func (*DefaultTokenService) ReadAccessToken

func (tokenService *DefaultTokenService) ReadAccessToken(tokenValue string) (*OAuth2Token, error)

func (*DefaultTokenService) RefreshAccessToken

func (tokenService *DefaultTokenService) RefreshAccessToken(refreshTokenValue string) (*OAuth2Token, error)

type InMemoryClientDetailsService

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

func NewInMemoryClientDetailService

func NewInMemoryClientDetailService(clientDetailsList []*model.ClientDetails) *InMemoryClientDetailsService

func (*InMemoryClientDetailsService) GetClientDetailByClientId

func (service *InMemoryClientDetailsService) GetClientDetailByClientId(ctx context.Context, clientId string, clientSecret string) (*model.ClientDetails, error)

type InMemoryUserDetailsService

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

UserService implement Service interface

func NewInMemoryUserDetailsService

func NewInMemoryUserDetailsService(userDetailsList []*model.UserDetails) *InMemoryUserDetailsService

func (*InMemoryUserDetailsService) GetUserDetailByUsername

func (service *InMemoryUserDetailsService) GetUserDetailByUsername(ctx context.Context, username, password string) (*model.UserDetails, error)

type JwtTokenEnhancer

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

func (*JwtTokenEnhancer) Enhance

func (enhancer *JwtTokenEnhancer) Enhance(oauth2Token *OAuth2Token, oauth2Details *OAuth2Details) (*OAuth2Token, error)

func (*JwtTokenEnhancer) Extract

func (enhancer *JwtTokenEnhancer) Extract(tokenValue string) (*OAuth2Token, *OAuth2Details, error)

type JwtTokenStore

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

func (*JwtTokenStore) GetAccessToken

func (tokenStore *JwtTokenStore) GetAccessToken(oauth2Details *OAuth2Details) (*OAuth2Token, error)

根据客户端信息和用户信息获取访问令牌

func (*JwtTokenStore) ReadAccessToken

func (tokenStore *JwtTokenStore) ReadAccessToken(tokenValue string) (*OAuth2Token, error)

func (*JwtTokenStore) ReadOAuth2Details

func (tokenStore *JwtTokenStore) ReadOAuth2Details(tokenValue string) (*OAuth2Details, error)

根据令牌值获取令牌对应的客户端和用户信息

func (*JwtTokenStore) ReadOAuth2DetailsForRefreshToken

func (tokenStore *JwtTokenStore) ReadOAuth2DetailsForRefreshToken(tokenValue string) (*OAuth2Details, error)

根据令牌值获取刷新令牌对应的客户端和用户信息

func (*JwtTokenStore) ReadRefreshToken

func (tokenStore *JwtTokenStore) ReadRefreshToken(tokenValue string) (*OAuth2Token, error)

根据令牌值获取刷新令牌

func (*JwtTokenStore) RemoveAccessToken

func (tokenStore *JwtTokenStore) RemoveAccessToken(tokenValue string)

移除存储的访问令牌

func (*JwtTokenStore) RemoveRefreshToken

func (tokenStore *JwtTokenStore) RemoveRefreshToken(oauth2Token string)

移除存储的刷新令牌

func (*JwtTokenStore) StoreAccessToken

func (tokenStore *JwtTokenStore) StoreAccessToken(oauth2Token *OAuth2Token, oauth2Details *OAuth2Details)

func (*JwtTokenStore) StoreRefreshToken

func (tokenStore *JwtTokenStore) StoreRefreshToken(oauth2Token *OAuth2Token, oauth2Details *OAuth2Details)

存储刷新令牌

type OAuth2TokenCustomClaims

type OAuth2TokenCustomClaims struct {
	UserDetails   UserDetails
	ClientDetails ClientDetails
	RefreshToken  OAuth2Token
	jwt.StandardClaims
}

type RefreshTokenGranter

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

func (*RefreshTokenGranter) Grant

func (tokenGranter *RefreshTokenGranter) Grant(ctx context.Context, grantType string, client *ClientDetails, reader *http.Request) (*OAuth2Token, error)

type Service

type Service interface {
	SimpleData(username string) string

	AdminData(username string) string

	// HealthCheck check service health status
	HealthCheck() bool
}

type TokenEnhancer

type TokenEnhancer interface {
	// 组装 Token 信息
	Enhance(oauth2Token *OAuth2Token, oauth2Details *OAuth2Details) (*OAuth2Token, error)
	// 从 Token 中还原信息
	Extract(tokenValue string) (*OAuth2Token, *OAuth2Details, error)
}

func NewJwtTokenEnhancer

func NewJwtTokenEnhancer(secretKey string) TokenEnhancer

type TokenGranter

type TokenGranter interface {
	Grant(ctx context.Context, grantType string, client *ClientDetails, reader *http.Request) (*OAuth2Token, error)
}

func NewComposeTokenGranter

func NewComposeTokenGranter(tokenGrantDict map[string]TokenGranter) TokenGranter

func NewRefreshGranter

func NewRefreshGranter(grantType string, userDetailsService UserDetailsService, tokenService TokenService) TokenGranter

func NewUsernamePasswordTokenGranter

func NewUsernamePasswordTokenGranter(grantType string, userDetailsService UserDetailsService, tokenService TokenService) TokenGranter

type TokenService

type TokenService interface {
	// 根据访问令牌获取对应的用户信息和客户端信息
	GetOAuth2DetailsByAccessToken(tokenValue string) (*OAuth2Details, error)
	// 根据用户信息和客户端信息生成访问令牌
	CreateAccessToken(oauth2Details *OAuth2Details) (*OAuth2Token, error)
	// 根据刷新令牌获取访问令牌
	RefreshAccessToken(refreshTokenValue string) (*OAuth2Token, error)
	// 根据用户信息和客户端信息获取已生成访问令牌
	GetAccessToken(details *OAuth2Details) (*OAuth2Token, error)
	// 根据访问令牌值获取访问令牌结构体
	ReadAccessToken(tokenValue string) (*OAuth2Token, error)
}

func NewTokenService

func NewTokenService(tokenStore TokenStore, tokenEnhancer TokenEnhancer) TokenService

type TokenStore

type TokenStore interface {

	// 存储访问令牌
	StoreAccessToken(oauth2Token *OAuth2Token, oauth2Details *OAuth2Details)
	// 根据令牌值获取访问令牌结构体
	ReadAccessToken(tokenValue string) (*OAuth2Token, error)
	// 根据令牌值获取令牌对应的客户端和用户信息
	ReadOAuth2Details(tokenValue string) (*OAuth2Details, error)
	// 根据客户端信息和用户信息获取访问令牌
	GetAccessToken(oauth2Details *OAuth2Details) (*OAuth2Token, error)
	// 移除存储的访问令牌
	RemoveAccessToken(tokenValue string)
	// 存储刷新令牌
	StoreRefreshToken(oauth2Token *OAuth2Token, oauth2Details *OAuth2Details)
	// 移除存储的刷新令牌
	RemoveRefreshToken(oauth2Token string)
	// 根据令牌值获取刷新令牌
	ReadRefreshToken(tokenValue string) (*OAuth2Token, error)
	// 根据令牌值获取刷新令牌对应的客户端和用户信息
	ReadOAuth2DetailsForRefreshToken(tokenValue string) (*OAuth2Details, error)
}

func NewJwtTokenStore

func NewJwtTokenStore(jwtTokenEnhancer *JwtTokenEnhancer) TokenStore

type UserDetailsService

type UserDetailsService interface {
	// Get UserDetails By username
	GetUserDetailByUsername(ctx context.Context, username, password string) (*model.UserDetails, error)
}

Service Define a service interface

type UsernamePasswordTokenGranter

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

func (*UsernamePasswordTokenGranter) Grant

func (tokenGranter *UsernamePasswordTokenGranter) Grant(ctx context.Context,
	grantType string, client *ClientDetails, reader *http.Request) (*OAuth2Token, error)

Jump to

Keyboard shortcuts

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