oauth2

package
v0.0.0-...-0026d00 Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2023 License: MIT Imports: 11 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrBadAuthenticationFormat = errors.New("bad authentication format")
	ErrTokenExpired            = errors.New("token expired")
	ErrBadTypeForUserData      = errors.New("bad type for user data")
)
View Source
var (
	ErrClientNotFound    = errors.New("oauth2 client not found")
	ErrAccessNotFound    = errors.New("oauth2 access token not found")
	ErrRefreshNotFound   = errors.New("oauth2 refresh token not found")
	ErrAuthorizeNotFound = errors.New("oauth2 authorize code not found")
	ErrUserNotFound      = errors.New("oauth2 user not found")
)

Functions

func AccessTokenToContext

func AccessTokenToContext(ctx context.Context, access *AccessInfo) context.Context

AccessTokenToContext returns new context with Access Token info.

func ClientToContext

func ClientToContext(ctx context.Context, client Client) context.Context

ClientToContext returns new context with Client.

Types

type AccessInfo

type AccessInfo struct {
	// Client information
	Client Client

	// Authorize data, for authorization code
	AuthorizeData *AuthorizeInfo

	// Previous access data, for refresh token
	AccessInfo *AccessInfo

	// Access token
	AccessToken string

	// Refresh Token. Can be blank
	RefreshToken string

	// Token expiration in seconds
	ExpiresIn int32

	// Requested scope
	Scope string

	// Redirect URI from request
	RedirectURI string

	// Date created
	CreatedAt time.Time

	// Data to be passed to storage. Not used by the library.
	UserData interface{}
}

AccessInfo represents an access grant (tokens, expiration, client, etc).

func AccessTokenFromContext

func AccessTokenFromContext(ctx context.Context) *AccessInfo

AccessTokenFromContext returns the Access Token info associated with the ctx.

func (*AccessInfo) ExpireAt

func (i *AccessInfo) ExpireAt() time.Time

ExpireAt returns the expiration date.

func (*AccessInfo) IsExpired

func (i *AccessInfo) IsExpired() bool

IsExpired returns true if access expired.

func (*AccessInfo) IsExpiredAt

func (i *AccessInfo) IsExpiredAt(t time.Time) bool

IsExpiredAt returns true if access expires at time 't'.

type AccessProvider

type AccessProvider interface {
	SaveAccess(*AccessInfo) error
	LoadAccess(token string) (*AccessInfo, error)
	RemoveAccess(token string) error
}

type AccessToken

type AccessToken interface {
	GetClient() Client
	GetToken() string
	IsExpired() bool
	GetUserID() string
}

type AuthorizeInfo

type AuthorizeInfo struct {
	// Client information
	Client Client

	// Authorization code
	Code string

	// Token expiration in seconds
	ExpiresIn int32

	// Requested scope
	Scope string

	// Redirect Uri from request
	RedirectURI string

	// State data from request
	State string

	// Date created
	CreatedAt time.Time

	// Data to be passed to storage. Not used by the library.
	UserData interface{}

	// Optional code_challenge as described in rfc7636
	CodeChallenge string

	// Optional code_challenge_method as described in rfc7636
	CodeChallengeMethod string
}

AuthorizeInfo info.

func (*AuthorizeInfo) ExpireAt

func (i *AuthorizeInfo) ExpireAt() time.Time

ExpireAt returns the expiration date.

func (*AuthorizeInfo) IsExpired

func (i *AuthorizeInfo) IsExpired() bool

IsExpired is true if authorization expired.

func (*AuthorizeInfo) IsExpiredAt

func (i *AuthorizeInfo) IsExpiredAt(t time.Time) bool

IsExpired is true if authorization expires at time 't'.

type AuthorizeProvider

type AuthorizeProvider interface {
	SaveAuthorize(*AuthorizeInfo) error
	LoadAuthorize(code string) (*AuthorizeInfo, error)
	RemoveAuthorize(code string) error
}

type Client

type Client interface {
	// Client ID
	GetID() string

	// Client secret
	GetSecret() string

	// Base client URI
	GetRedirectURI() string

	// Data to be passed to storage. Not used by the library.
	GetUserData() interface{}
}

Client information.

func ClientFromContext

func ClientFromContext(ctx context.Context) Client

ClientFromContext returns the Client associated with the ctx.

type ClientProvider

type ClientProvider interface {
	SaveClient(Client) error
	LoadClient(id string) (Client, error)
	RemoveClient(id string) error
}

type ClientSecretMatcher

type ClientSecretMatcher interface {
	// SecretMatches returns true if the given secret matches
	SecretMatches(secret string) bool
}

ClientSecretMatcher is an optional interface clients can implement which allows them to be the one to determine if a secret matches. If a Client implements ClientSecretMatcher, the framework will never call GetSecret.

type DefaultClient

type DefaultClient struct {
	ID          string
	Secret      string
	RedirectURI string
	UserData    interface{}
}

DefaultClient stores all data in struct variables.

func (*DefaultClient) CopyFrom

func (d *DefaultClient) CopyFrom(client Client)

func (*DefaultClient) GetID

func (d *DefaultClient) GetID() string

func (*DefaultClient) GetRedirectURI

func (d *DefaultClient) GetRedirectURI() string

func (*DefaultClient) GetSecret

func (d *DefaultClient) GetSecret() string

func (*DefaultClient) GetUserData

func (d *DefaultClient) GetUserData() interface{}

func (*DefaultClient) SecretMatches

func (d *DefaultClient) SecretMatches(secret string) bool

Implement the ClientSecretMatcher interface.

type MockAccessProvider

type MockAccessProvider struct {
	mock.Mock
}

MockAccessProvider is an autogenerated mock type for the AccessProvider type

func (*MockAccessProvider) LoadAccess

func (_m *MockAccessProvider) LoadAccess(token string) (*AccessInfo, error)

LoadAccess provides a mock function with given fields: token

func (*MockAccessProvider) RemoveAccess

func (_m *MockAccessProvider) RemoveAccess(token string) error

RemoveAccess provides a mock function with given fields: token

func (*MockAccessProvider) SaveAccess

func (_m *MockAccessProvider) SaveAccess(_a0 *AccessInfo) error

SaveAccess provides a mock function with given fields: _a0

type MockAuthorizeProvider

type MockAuthorizeProvider struct {
	mock.Mock
}

MockAuthorizeProvider is an autogenerated mock type for the AuthorizeProvider type

func (*MockAuthorizeProvider) LoadAuthorize

func (_m *MockAuthorizeProvider) LoadAuthorize(code string) (*AuthorizeInfo, error)

LoadAuthorize provides a mock function with given fields: code

func (*MockAuthorizeProvider) RemoveAuthorize

func (_m *MockAuthorizeProvider) RemoveAuthorize(code string) error

RemoveAuthorize provides a mock function with given fields: code

func (*MockAuthorizeProvider) SaveAuthorize

func (_m *MockAuthorizeProvider) SaveAuthorize(_a0 *AuthorizeInfo) error

SaveAuthorize provides a mock function with given fields: _a0

type MockClientProvider

type MockClientProvider struct {
	mock.Mock
}

MockClientProvider is an autogenerated mock type for the ClientProvider type

func (*MockClientProvider) LoadClient

func (_m *MockClientProvider) LoadClient(id string) (Client, error)

LoadClient provides a mock function with given fields: id

func (*MockClientProvider) RemoveClient

func (_m *MockClientProvider) RemoveClient(id string) error

RemoveClient provides a mock function with given fields: id

func (*MockClientProvider) SaveClient

func (_m *MockClientProvider) SaveClient(_a0 Client) error

SaveClient provides a mock function with given fields: _a0

type MockRefreshProvider

type MockRefreshProvider struct {
	mock.Mock
}

MockRefreshProvider is an autogenerated mock type for the RefreshProvider type

func (*MockRefreshProvider) LoadRefresh

func (_m *MockRefreshProvider) LoadRefresh(token string) (*AccessInfo, error)

LoadRefresh provides a mock function with given fields: token

func (*MockRefreshProvider) RemoveRefresh

func (_m *MockRefreshProvider) RemoveRefresh(token string) error

RemoveRefresh provides a mock function with given fields: token

func (*MockRefreshProvider) SaveRefresh

func (_m *MockRefreshProvider) SaveRefresh(_a0 *AccessInfo) error

SaveRefresh provides a mock function with given fields: _a0

type MockStorageProvider

type MockStorageProvider struct {
	mock.Mock
}

MockStorageProvider is an autogenerated mock type for the StorageProvider type

func (*MockStorageProvider) LoadAccess

func (_m *MockStorageProvider) LoadAccess(token string) (*AccessInfo, error)

LoadAccess provides a mock function with given fields: token

func (*MockStorageProvider) LoadAuthorize

func (_m *MockStorageProvider) LoadAuthorize(code string) (*AuthorizeInfo, error)

LoadAuthorize provides a mock function with given fields: code

func (*MockStorageProvider) LoadClient

func (_m *MockStorageProvider) LoadClient(id string) (Client, error)

LoadClient provides a mock function with given fields: id

func (*MockStorageProvider) LoadRefresh

func (_m *MockStorageProvider) LoadRefresh(token string) (*AccessInfo, error)

LoadRefresh provides a mock function with given fields: token

func (*MockStorageProvider) RemoveAccess

func (_m *MockStorageProvider) RemoveAccess(token string) error

RemoveAccess provides a mock function with given fields: token

func (*MockStorageProvider) RemoveAuthorize

func (_m *MockStorageProvider) RemoveAuthorize(code string) error

RemoveAuthorize provides a mock function with given fields: code

func (*MockStorageProvider) RemoveClient

func (_m *MockStorageProvider) RemoveClient(id string) error

RemoveClient provides a mock function with given fields: id

func (*MockStorageProvider) RemoveRefresh

func (_m *MockStorageProvider) RemoveRefresh(token string) error

RemoveRefresh provides a mock function with given fields: token

func (*MockStorageProvider) SaveAccess

func (_m *MockStorageProvider) SaveAccess(_a0 *AccessInfo) error

SaveAccess provides a mock function with given fields: _a0

func (*MockStorageProvider) SaveAuthorize

func (_m *MockStorageProvider) SaveAuthorize(_a0 *AuthorizeInfo) error

SaveAuthorize provides a mock function with given fields: _a0

func (*MockStorageProvider) SaveClient

func (_m *MockStorageProvider) SaveClient(_a0 Client) error

SaveClient provides a mock function with given fields: _a0

func (*MockStorageProvider) SaveRefresh

func (_m *MockStorageProvider) SaveRefresh(_a0 *AccessInfo) error

SaveRefresh provides a mock function with given fields: _a0

type MockUserProvider

type MockUserProvider struct {
	mock.Mock
}

MockUserProvider is an autogenerated mock type for the UserProvider type

func (*MockUserProvider) LoadUser

func (_m *MockUserProvider) LoadUser(id string) (user.User, error)

LoadUser provides a mock function with given fields: id

type OAuth2AuthenticationProvider

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

OAuth2AuthenticationProvider struct.

func NewOAuth2AuthenticationProvider

func NewOAuth2AuthenticationProvider(
	tokenGenerator token.Generator,
	userStorage UserProvider,
	clientStorage ClientProvider,
	accessStorage AccessProvider,
	refreshStorage RefreshProvider,
	authorizeStorage AuthorizeProvider,
) *OAuth2AuthenticationProvider

NewOAuth2AuthenticationProvider constructor.

func (*OAuth2AuthenticationProvider) Authenticate

Authenticate implements Provider.

func (*OAuth2AuthenticationProvider) IsSupported

IsSupported returns true if credential.Credential is supported.

type RefreshProvider

type RefreshProvider interface {
	SaveRefresh(*AccessInfo) error
	LoadRefresh(token string) (*AccessInfo, error)
	RemoveRefresh(token string) error
}

type UserProvider

type UserProvider interface {
	LoadUser(id string) (user.User, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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