Documentation
¶
Index ¶
- type AccessTokenStorage
- type AccessTokenStrategy
- type AuthorizeCodeStorage
- type AuthorizeCodeStrategy
- type AuthorizeExplicitGrantHandler
- func (c *AuthorizeExplicitGrantHandler) GetSanitationWhiteList() []string
- func (c *AuthorizeExplicitGrantHandler) HandleAuthorizeEndpointRequest(ctx context.Context, ar fosite.AuthorizeRequester, ...) error
- func (c *AuthorizeExplicitGrantHandler) HandleTokenEndpointRequest(ctx context.Context, request fosite.AccessRequester) error
- func (c *AuthorizeExplicitGrantHandler) IssueAuthorizeCode(ctx context.Context, ar fosite.AuthorizeRequester, ...) error
- func (c *AuthorizeExplicitGrantHandler) PopulateTokenEndpointResponse(ctx context.Context, requester fosite.AccessRequester, ...) error
- type AuthorizeImplicitGrantTypeHandler
- type ClientCredentialsGrantHandler
- type ClientCredentialsGrantStorage
- type CoreStorage
- type CoreStrategy
- type CoreValidator
- type DefaultJWTStrategy
- func (h DefaultJWTStrategy) AccessTokenSignature(token string) string
- func (h DefaultJWTStrategy) AuthorizeCodeSignature(token string) string
- func (h *DefaultJWTStrategy) GenerateAccessToken(ctx context.Context, requester fosite.Requester) (token string, signature string, err error)
- func (h *DefaultJWTStrategy) GenerateAuthorizeCode(ctx context.Context, req fosite.Requester) (token string, signature string, err error)
- func (h *DefaultJWTStrategy) GenerateRefreshToken(ctx context.Context, req fosite.Requester) (token string, signature string, err error)
- func (h DefaultJWTStrategy) RefreshTokenSignature(token string) string
- func (h *DefaultJWTStrategy) ValidateAccessToken(ctx context.Context, _ fosite.Requester, token string) error
- func (h *DefaultJWTStrategy) ValidateAuthorizeCode(ctx context.Context, req fosite.Requester, token string) error
- func (h *DefaultJWTStrategy) ValidateJWT(ctx context.Context, tokenType fosite.TokenType, token string) (requester fosite.Requester, err error)
- func (h *DefaultJWTStrategy) ValidateRefreshToken(ctx context.Context, req fosite.Requester, token string) error
- type HMACSHAStrategy
- func (h HMACSHAStrategy) AccessTokenSignature(token string) string
- func (h HMACSHAStrategy) AuthorizeCodeSignature(token string) string
- func (h HMACSHAStrategy) GenerateAccessToken(_ context.Context, _ fosite.Requester) (token string, signature string, err error)
- func (h HMACSHAStrategy) GenerateAuthorizeCode(_ context.Context, _ fosite.Requester) (token string, signature string, err error)
- func (h HMACSHAStrategy) GenerateRefreshToken(_ context.Context, _ fosite.Requester) (token string, signature string, err error)
- func (h HMACSHAStrategy) RefreshTokenSignature(token string) string
- func (h HMACSHAStrategy) ValidateAccessToken(_ context.Context, r fosite.Requester, token string) (err error)
- func (h HMACSHAStrategy) ValidateAuthorizeCode(_ context.Context, r fosite.Requester, token string) (err error)
- func (h HMACSHAStrategy) ValidateRefreshToken(_ context.Context, _ fosite.Requester, token string) (err error)
- type HandleHelper
- type JWTAccessTokenStrategy
- type JWTSession
- func (s *JWTSession) Clone() fosite.Session
- func (s *JWTSession) GetExpiresAt(key fosite.TokenType) time.Time
- func (j *JWTSession) GetJWTClaims() *jwt.JWTClaims
- func (j *JWTSession) GetJWTHeader() *jwt.Headers
- func (s *JWTSession) GetSubject() string
- func (s *JWTSession) GetUsername() string
- func (s *JWTSession) SetExpiresAt(key fosite.TokenType, exp time.Time)
- type JWTSessionContainer
- type JWTStrategy
- type RefreshTokenGrantHandler
- type RefreshTokenStorage
- type RefreshTokenStrategy
- type ResourceOwnerPasswordCredentialsGrantHandler
- type ResourceOwnerPasswordCredentialsGrantStorage
- type StatelessJWTValidator
- type TokenRevocationHandler
- type TokenRevocationStorage
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccessTokenStorage ¶
type AccessTokenStorage interface {
CreateAccessTokenSession(ctx context.Context, signature string, request fosite.Requester) (err error)
GetAccessTokenSession(ctx context.Context, signature string, session fosite.Session) (request fosite.Requester, err error)
DeleteAccessTokenSession(ctx context.Context, signature string) (err error)
}
type AccessTokenStrategy ¶
type AuthorizeCodeStorage ¶
type AuthorizeCodeStorage interface {
// GetAuthorizeCodeSession stores the authorization request for a given authorization code.
CreateAuthorizeCodeSession(ctx context.Context, code string, request fosite.Requester) (err error)
// GetAuthorizeCodeSession hydrates the session based on the given code and returns the authorization request.
// If the authorization code has been invalidated with `InvalidateAuthorizeCodeSession`, this
// method should return the ErrInvalidatedAuthorizeCode error.
//
// Make sure to also return the fosite.Requester value when returning the fosite.ErrInvalidatedAuthorizeCode error!
GetAuthorizeCodeSession(ctx context.Context, code string, session fosite.Session) (request fosite.Requester, err error)
// InvalidateAuthorizeCodeSession is called when an authorize code is being used. The state of the authorization
// code should be set to invalid and consecutive requests to GetAuthorizeCodeSession should return the
// ErrInvalidatedAuthorizeCode error.
InvalidateAuthorizeCodeSession(ctx context.Context, code string) (err error)
}
AuthorizeCodeStorage handles storage requests related to authorization codes.
type AuthorizeCodeStrategy ¶
type AuthorizeExplicitGrantHandler ¶
type AuthorizeExplicitGrantHandler struct {
AccessTokenStrategy AccessTokenStrategy
RefreshTokenStrategy RefreshTokenStrategy
AuthorizeCodeStrategy AuthorizeCodeStrategy
CoreStorage CoreStorage
// AuthCodeLifespan defines the lifetime of an authorize code.
AuthCodeLifespan time.Duration
// AccessTokenLifespan defines the lifetime of an access token.
AccessTokenLifespan time.Duration
ScopeStrategy fosite.ScopeStrategy
// SanitationWhiteList is a whitelist of form values that are required by the token endpoint. These values
// are safe for storage in a database (cleartext).
SanitationWhiteList []string
TokenRevocationStorage TokenRevocationStorage
}
AuthorizeExplicitGrantTypeHandler is a response handler for the Authorize Code grant using the explicit grant type as defined in https://tools.ietf.org/html/rfc6749#section-4.1
func (*AuthorizeExplicitGrantHandler) GetSanitationWhiteList ¶ added in v0.17.0
func (c *AuthorizeExplicitGrantHandler) GetSanitationWhiteList() []string
func (*AuthorizeExplicitGrantHandler) HandleAuthorizeEndpointRequest ¶
func (c *AuthorizeExplicitGrantHandler) HandleAuthorizeEndpointRequest(ctx context.Context, ar fosite.AuthorizeRequester, resp fosite.AuthorizeResponder) error
func (*AuthorizeExplicitGrantHandler) HandleTokenEndpointRequest ¶
func (c *AuthorizeExplicitGrantHandler) HandleTokenEndpointRequest(ctx context.Context, request fosite.AccessRequester) error
HandleTokenEndpointRequest implements * https://tools.ietf.org/html/rfc6749#section-4.1.3 (everything)
func (*AuthorizeExplicitGrantHandler) IssueAuthorizeCode ¶
func (c *AuthorizeExplicitGrantHandler) IssueAuthorizeCode(ctx context.Context, ar fosite.AuthorizeRequester, resp fosite.AuthorizeResponder) error
func (*AuthorizeExplicitGrantHandler) PopulateTokenEndpointResponse ¶
func (c *AuthorizeExplicitGrantHandler) PopulateTokenEndpointResponse(ctx context.Context, requester fosite.AccessRequester, responder fosite.AccessResponder) error
type AuthorizeImplicitGrantTypeHandler ¶
type AuthorizeImplicitGrantTypeHandler struct {
AccessTokenStrategy AccessTokenStrategy
// AccessTokenStorage is used to persist session data across requests.
AccessTokenStorage AccessTokenStorage
// AccessTokenLifespan defines the lifetime of an access token.
AccessTokenLifespan time.Duration
ScopeStrategy fosite.ScopeStrategy
}
AuthorizeImplicitGrantTypeHandler is a response handler for the Authorize Code grant using the implicit grant type as defined in https://tools.ietf.org/html/rfc6749#section-4.2
func (*AuthorizeImplicitGrantTypeHandler) HandleAuthorizeEndpointRequest ¶
func (c *AuthorizeImplicitGrantTypeHandler) HandleAuthorizeEndpointRequest(ctx context.Context, ar fosite.AuthorizeRequester, resp fosite.AuthorizeResponder) error
func (*AuthorizeImplicitGrantTypeHandler) IssueImplicitAccessToken ¶
func (c *AuthorizeImplicitGrantTypeHandler) IssueImplicitAccessToken(ctx context.Context, ar fosite.AuthorizeRequester, resp fosite.AuthorizeResponder) error
type ClientCredentialsGrantHandler ¶
type ClientCredentialsGrantHandler struct {
*HandleHelper
ScopeStrategy fosite.ScopeStrategy
}
func (*ClientCredentialsGrantHandler) HandleTokenEndpointRequest ¶
func (c *ClientCredentialsGrantHandler) HandleTokenEndpointRequest(_ context.Context, request fosite.AccessRequester) error
IntrospectTokenEndpointRequest implements https://tools.ietf.org/html/rfc6749#section-4.4.2
func (*ClientCredentialsGrantHandler) PopulateTokenEndpointResponse ¶
func (c *ClientCredentialsGrantHandler) PopulateTokenEndpointResponse(ctx context.Context, request fosite.AccessRequester, response fosite.AccessResponder) error
PopulateTokenEndpointResponse implements https://tools.ietf.org/html/rfc6749#section-4.4.3
type ClientCredentialsGrantStorage ¶
type ClientCredentialsGrantStorage interface {
AccessTokenStorage
}
type CoreStorage ¶
type CoreStorage interface {
AuthorizeCodeStorage
AccessTokenStorage
RefreshTokenStorage
}
type CoreStrategy ¶
type CoreStrategy interface {
AccessTokenStrategy
RefreshTokenStrategy
AuthorizeCodeStrategy
}
type CoreValidator ¶
type CoreValidator struct {
CoreStrategy
CoreStorage
ScopeStrategy fosite.ScopeStrategy
DisableRefreshTokenValidation bool
}
func (*CoreValidator) IntrospectToken ¶ added in v0.4.0
type DefaultJWTStrategy ¶ added in v0.21.0
type DefaultJWTStrategy struct {
jwt.JWTStrategy
HMACSHAStrategy *HMACSHAStrategy
Issuer string
}
DefaultJWTStrategy is a JWT RS256 strategy.
func (DefaultJWTStrategy) AccessTokenSignature ¶ added in v0.21.0
func (h DefaultJWTStrategy) AccessTokenSignature(token string) string
func (DefaultJWTStrategy) AuthorizeCodeSignature ¶ added in v0.21.0
func (h DefaultJWTStrategy) AuthorizeCodeSignature(token string) string
func (*DefaultJWTStrategy) GenerateAccessToken ¶ added in v0.21.0
func (*DefaultJWTStrategy) GenerateAuthorizeCode ¶ added in v0.21.0
func (*DefaultJWTStrategy) GenerateRefreshToken ¶ added in v0.21.0
func (DefaultJWTStrategy) RefreshTokenSignature ¶ added in v0.21.0
func (h DefaultJWTStrategy) RefreshTokenSignature(token string) string
func (*DefaultJWTStrategy) ValidateAccessToken ¶ added in v0.21.0
func (*DefaultJWTStrategy) ValidateAuthorizeCode ¶ added in v0.21.0
func (*DefaultJWTStrategy) ValidateJWT ¶ added in v0.21.0
func (*DefaultJWTStrategy) ValidateRefreshToken ¶ added in v0.21.0
type HMACSHAStrategy ¶
type HMACSHAStrategy struct {
Enigma *enigma.HMACStrategy
AccessTokenLifespan time.Duration
AuthorizeCodeLifespan time.Duration
}
func (HMACSHAStrategy) AccessTokenSignature ¶
func (h HMACSHAStrategy) AccessTokenSignature(token string) string
func (HMACSHAStrategy) AuthorizeCodeSignature ¶
func (h HMACSHAStrategy) AuthorizeCodeSignature(token string) string
func (HMACSHAStrategy) GenerateAccessToken ¶
func (HMACSHAStrategy) GenerateAuthorizeCode ¶
func (HMACSHAStrategy) GenerateRefreshToken ¶
func (HMACSHAStrategy) RefreshTokenSignature ¶
func (h HMACSHAStrategy) RefreshTokenSignature(token string) string
func (HMACSHAStrategy) ValidateAccessToken ¶
func (HMACSHAStrategy) ValidateAuthorizeCode ¶
func (HMACSHAStrategy) ValidateRefreshToken ¶
type HandleHelper ¶
type HandleHelper struct {
AccessTokenStrategy AccessTokenStrategy
AccessTokenStorage AccessTokenStorage
AccessTokenLifespan time.Duration
}
func (*HandleHelper) IssueAccessToken ¶
func (h *HandleHelper) IssueAccessToken(ctx context.Context, requester fosite.AccessRequester, responder fosite.AccessResponder) error
type JWTAccessTokenStrategy ¶ added in v0.6.17
type JWTAccessTokenStrategy interface {
AccessTokenStrategy
JWTStrategy
}
type JWTSession ¶
type JWTSession struct {
JWTClaims *jwt.JWTClaims
JWTHeader *jwt.Headers
ExpiresAt map[fosite.TokenType]time.Time
Username string
Subject string
}
JWTSession Container for the JWT session.
func (*JWTSession) Clone ¶ added in v0.6.0
func (s *JWTSession) Clone() fosite.Session
func (*JWTSession) GetExpiresAt ¶ added in v0.5.0
func (s *JWTSession) GetExpiresAt(key fosite.TokenType) time.Time
func (*JWTSession) GetJWTClaims ¶
func (j *JWTSession) GetJWTClaims() *jwt.JWTClaims
func (*JWTSession) GetJWTHeader ¶
func (j *JWTSession) GetJWTHeader() *jwt.Headers
func (*JWTSession) GetSubject ¶ added in v0.5.0
func (s *JWTSession) GetSubject() string
func (*JWTSession) GetUsername ¶ added in v0.5.0
func (s *JWTSession) GetUsername() string
func (*JWTSession) SetExpiresAt ¶ added in v0.5.0
func (s *JWTSession) SetExpiresAt(key fosite.TokenType, exp time.Time)
type JWTSessionContainer ¶
type JWTStrategy ¶ added in v0.6.17
type RefreshTokenGrantHandler ¶
type RefreshTokenGrantHandler struct {
AccessTokenStrategy AccessTokenStrategy
RefreshTokenStrategy RefreshTokenStrategy
TokenRevocationStorage TokenRevocationStorage
// AccessTokenLifespan defines the lifetime of an access token.
AccessTokenLifespan time.Duration
}
func (*RefreshTokenGrantHandler) HandleTokenEndpointRequest ¶
func (c *RefreshTokenGrantHandler) HandleTokenEndpointRequest(ctx context.Context, request fosite.AccessRequester) error
HandleTokenEndpointRequest implements https://tools.ietf.org/html/rfc6749#section-6
func (*RefreshTokenGrantHandler) PopulateTokenEndpointResponse ¶
func (c *RefreshTokenGrantHandler) PopulateTokenEndpointResponse(ctx context.Context, requester fosite.AccessRequester, responder fosite.AccessResponder) error
PopulateTokenEndpointResponse implements https://tools.ietf.org/html/rfc6749#section-6
type RefreshTokenStorage ¶
type RefreshTokenStorage interface {
CreateRefreshTokenSession(ctx context.Context, signature string, request fosite.Requester) (err error)
GetRefreshTokenSession(ctx context.Context, signature string, session fosite.Session) (request fosite.Requester, err error)
DeleteRefreshTokenSession(ctx context.Context, signature string) (err error)
}
type RefreshTokenStrategy ¶
type ResourceOwnerPasswordCredentialsGrantHandler ¶
type ResourceOwnerPasswordCredentialsGrantHandler struct {
// ResourceOwnerPasswordCredentialsGrantStorage is used to persist session data across requests.
ResourceOwnerPasswordCredentialsGrantStorage ResourceOwnerPasswordCredentialsGrantStorage
RefreshTokenStrategy RefreshTokenStrategy
ScopeStrategy fosite.ScopeStrategy
*HandleHelper
}
func (*ResourceOwnerPasswordCredentialsGrantHandler) HandleTokenEndpointRequest ¶
func (c *ResourceOwnerPasswordCredentialsGrantHandler) HandleTokenEndpointRequest(ctx context.Context, request fosite.AccessRequester) error
HandleTokenEndpointRequest implements https://tools.ietf.org/html/rfc6749#section-4.3.2
func (*ResourceOwnerPasswordCredentialsGrantHandler) PopulateTokenEndpointResponse ¶
func (c *ResourceOwnerPasswordCredentialsGrantHandler) PopulateTokenEndpointResponse(ctx context.Context, requester fosite.AccessRequester, responder fosite.AccessResponder) error
PopulateTokenEndpointResponse implements https://tools.ietf.org/html/rfc6749#section-4.3.3
type ResourceOwnerPasswordCredentialsGrantStorage ¶
type ResourceOwnerPasswordCredentialsGrantStorage interface {
Authenticate(ctx context.Context, name string, secret string) error
AccessTokenStorage
RefreshTokenStorage
}
type StatelessJWTValidator ¶ added in v0.6.17
type StatelessJWTValidator struct {
JWTAccessTokenStrategy
ScopeStrategy fosite.ScopeStrategy
}
func (*StatelessJWTValidator) IntrospectToken ¶ added in v0.6.17
type TokenRevocationHandler ¶ added in v0.4.0
type TokenRevocationHandler struct {
TokenRevocationStorage TokenRevocationStorage
RefreshTokenStrategy RefreshTokenStrategy
AccessTokenStrategy AccessTokenStrategy
}
func (*TokenRevocationHandler) RevokeToken ¶ added in v0.4.0
func (r *TokenRevocationHandler) RevokeToken(ctx context.Context, token string, tokenType fosite.TokenType, client fosite.Client) error
RevokeToken implements https://tools.ietf.org/html/rfc7009#section-2.1 The token type hint indicates which token type check should be performed first.
type TokenRevocationStorage ¶ added in v0.4.0
type TokenRevocationStorage interface {
RefreshTokenStorage
AccessTokenStorage
// RevokeRefreshToken revokes a refresh token as specified in:
// https://tools.ietf.org/html/rfc7009#section-2.1
// If the particular
// token is a refresh token and the authorization server supports the
// revocation of access tokens, then the authorization server SHOULD
// also invalidate all access tokens based on the same authorization
// grant (see Implementation Note).
RevokeRefreshToken(ctx context.Context, requestID string) error
// RevokeAccessToken revokes an access token as specified in:
// https://tools.ietf.org/html/rfc7009#section-2.1
// If the token passed to the request
// is an access token, the server MAY revoke the respective refresh
// token as well.
RevokeAccessToken(ctx context.Context, requestID string) error
}
TokenRevocationStorage provides the storage implementation as specified in: https://tools.ietf.org/html/rfc7009
Source Files
¶
- flow_authorize_code_auth.go
- flow_authorize_code_token.go
- flow_authorize_implicit.go
- flow_client_credentials.go
- flow_client_credentials_storage.go
- flow_refresh.go
- flow_resource_owner.go
- flow_resource_owner_storage.go
- helper.go
- introspector.go
- introspector_jwt.go
- revocation.go
- revocation_storage.go
- storage.go
- strategy.go
- strategy_hmacsha.go
- strategy_jwt.go
- strategy_jwt_session.go