Documentation
¶
Index ¶
- Variables
- func AccessTokenToContext(ctx context.Context, access *AccessInfo) context.Context
- func ClientToContext(ctx context.Context, client Client) context.Context
- type AccessInfo
- type AccessProvider
- type AccessToken
- type AuthorizeInfo
- type AuthorizeProvider
- type Client
- type ClientProvider
- type ClientSecretMatcher
- type DefaultClient
- type MockAccessProvider
- type MockAuthorizeProvider
- type MockClientProvider
- type MockRefreshProvider
- type MockStorageProvider
- func (_m *MockStorageProvider) LoadAccess(token string) (*AccessInfo, error)
- func (_m *MockStorageProvider) LoadAuthorize(code string) (*AuthorizeInfo, error)
- func (_m *MockStorageProvider) LoadClient(id string) (Client, error)
- func (_m *MockStorageProvider) LoadRefresh(token string) (*AccessInfo, error)
- func (_m *MockStorageProvider) RemoveAccess(token string) error
- func (_m *MockStorageProvider) RemoveAuthorize(code string) error
- func (_m *MockStorageProvider) RemoveClient(id string) error
- func (_m *MockStorageProvider) RemoveRefresh(token string) error
- func (_m *MockStorageProvider) SaveAccess(_a0 *AccessInfo) error
- func (_m *MockStorageProvider) SaveAuthorize(_a0 *AuthorizeInfo) error
- func (_m *MockStorageProvider) SaveClient(_a0 Client) error
- func (_m *MockStorageProvider) SaveRefresh(_a0 *AccessInfo) error
- type MockUserProvider
- type OAuth2AuthenticationProvider
- type RefreshProvider
- type StorageProvider
- type UserProvider
Constants ¶
This section is empty.
Variables ¶
var ( ErrBadAuthenticationFormat = errors.New("bad authentication format") ErrTokenExpired = errors.New("token expired") ErrBadTypeForUserData = errors.New("bad type for user data") )
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.
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 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 ¶
ClientFromContext returns the Client associated with the ctx.
type ClientProvider ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
MockUserProvider is an autogenerated mock type for the UserProvider type
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 ¶
func (p *OAuth2AuthenticationProvider) Authenticate(r *http.Request, creds credential.Credential) (*http.Request, error)
Authenticate implements Provider.
func (*OAuth2AuthenticationProvider) IsSupported ¶
func (p *OAuth2AuthenticationProvider) IsSupported(creds credential.Credential) bool
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 StorageProvider ¶
type StorageProvider interface { ClientProvider AccessProvider RefreshProvider AuthorizeProvider }