Documentation ¶
Index ¶
- Variables
- func GetRedirectURIFromRequestValues(values url.Values) (string, error)
- func IsValidRedirectURI(redirectURI *url.URL) bool
- func MatchRedirectURIWithClientRedirectURIs(rawurl string, client Client) (*url.URL, error)
- func NewContext() context.Context
- func StringInSlice(needle string, haystack []string) bool
- type AccessRequest
- func (a *AccessRequest) DidHandleGrantType() bool
- func (a *AccessRequest) GetClient() client.Client
- func (a *AccessRequest) GetGrantType() string
- func (a *AccessRequest) GetGrantedScopes() Arguments
- func (a *AccessRequest) GetRequestedAt() time.Time
- func (a *AccessRequest) GetScopes() Arguments
- func (a *AccessRequest) GrantScope(scope string)
- func (a *AccessRequest) SetGrantTypeHandled(name string)
- func (a *AccessRequest) SetScopes(s Arguments)
- type AccessRequester
- type AccessResponder
- type AccessResponse
- func (a *AccessResponse) GetAccessToken() string
- func (a *AccessResponse) GetExtra(key string) interface{}
- func (a *AccessResponse) GetTokenType() string
- func (a *AccessResponse) SetAccessToken(token string)
- func (a *AccessResponse) SetExtra(key string, value interface{})
- func (a *AccessResponse) SetTokenType(name string)
- func (a *AccessResponse) ToMap() map[string]interface{}
- type Arguments
- type AuthorizeEndpointHandler
- type AuthorizeEndpointHandlers
- type AuthorizeRequest
- func (d *AuthorizeRequest) DidHandleAllResponseTypes() bool
- func (d *AuthorizeRequest) GetClient() Client
- func (a *AuthorizeRequest) GetGrantedScopes() Arguments
- func (d *AuthorizeRequest) GetRedirectURI() *url.URL
- func (d *AuthorizeRequest) GetRequestedAt() time.Time
- func (d *AuthorizeRequest) GetResponseTypes() Arguments
- func (d *AuthorizeRequest) GetScopes() Arguments
- func (d *AuthorizeRequest) GetState() string
- func (a *AuthorizeRequest) GrantScope(scope string)
- func (d *AuthorizeRequest) IsRedirectURIValid() bool
- func (d *AuthorizeRequest) SetResponseTypeHandled(name string)
- func (a *AuthorizeRequest) SetScopes(s Arguments)
- type AuthorizeRequester
- type AuthorizeResponder
- type AuthorizeResponse
- func (a *AuthorizeResponse) AddFragment(key, value string)
- func (a *AuthorizeResponse) AddHeader(key, value string)
- func (a *AuthorizeResponse) AddQuery(key, value string)
- func (a *AuthorizeResponse) GetFragment() url.Values
- func (a *AuthorizeResponse) GetHeader() http.Header
- func (a *AuthorizeResponse) GetQuery() url.Values
- type Fosite
- func (f *Fosite) NewAccessRequest(ctx context.Context, r *http.Request, session interface{}) (AccessRequester, error)
- func (f *Fosite) NewAccessResponse(ctx context.Context, req *http.Request, requester AccessRequester, ...) (AccessResponder, error)
- func (c *Fosite) NewAuthorizeRequest(_ context.Context, r *http.Request) (AuthorizeRequester, error)
- func (o *Fosite) NewAuthorizeResponse(ctx context.Context, r *http.Request, ar AuthorizeRequester, ...) (AuthorizeResponder, error)
- func (c *Fosite) WriteAccessError(rw http.ResponseWriter, requester AccessRequester, err error)
- func (c *Fosite) WriteAccessResponse(rw http.ResponseWriter, requester AccessRequester, responder AccessResponder)
- func (c *Fosite) WriteAuthorizeError(rw http.ResponseWriter, ar AuthorizeRequester, err error)
- func (c *Fosite) WriteAuthorizeResponse(rw http.ResponseWriter, ar AuthorizeRequester, resp AuthorizeResponder)
- type OAuth2Provider
- type RFC6749Error
- type Storage
- type TokenEndpointHandler
- type TokenEndpointHandlers
Constants ¶
This section is empty.
Variables ¶
var ( ErrInvalidRequest = errors.New("The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed") ErrAccessDenied = errors.New("The resource owner or authorization server denied the request") ErrUnsupportedResponseType = errors.New("The authorization server does not support obtaining a token using this method") ErrInvalidScope = errors.New("The requested scope is invalid, unknown, or malformed") ErrServerError = errors.New("The authorization server encountered an unexpected condition that prevented it from fulfilling the request") ErrUnsupportedGrantType = errors.New("The authorization grant type is not supported by the authorization server") ErrInvalidGrant = errors.New("The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client") ErrInvalidClient = errors.New("Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method)") ErrInvalidState = errors.Errorf("The state is missing or has less than %d characters and is therefore considered too weak", minStateLength) )
var DefaultRequiredScopeName = "fosite"
Functions ¶
func GetRedirectURIFromRequestValues ¶
GetRedirectURIFromRequestValues extracts the redirect_uri from values but does not do any sort of validation.
Considered specifications
- https://tools.ietf.org/html/rfc6749#section-3.1 The endpoint URI MAY include an "application/x-www-form-urlencoded" formatted (per Appendix B) query component ([RFC3986] Section 3.4), which MUST be retained when adding additional query parameters.
func IsValidRedirectURI ¶
IsValidRedirectURI validates a redirect_uri as specified in:
* https://tools.ietf.org/html/rfc6749#section-3.1.2
- The redirection endpoint URI MUST be an absolute URI as defined by [RFC3986] Section 4.3.
- The endpoint URI MUST NOT include a fragment component.
- https://tools.ietf.org/html/rfc3986#section-4.3 absolute-URI = scheme ":" hier-part [ "?" query ]
- https://tools.ietf.org/html/rfc6819#section-5.1.1
func MatchRedirectURIWithClientRedirectURIs ¶
MatchRedirectURIWithClientRedirectURIs if the given uri is a registered redirect uri. Does not perform uri validation.
Considered specifications
https://tools.ietf.org/html/rfc6749#section-3.1.2.3 If multiple redirection URIs have been registered, if only part of the redirection URI has been registered, or if no redirection URI has been registered, the client MUST include a redirection URI with the authorization request using the "redirect_uri" request parameter.
When a redirection URI is included in an authorization request, the authorization server MUST compare and match the value received against at least one of the registered redirection URIs (or URI components) as defined in [RFC3986] Section 6, if any redirection URIs were registered. If the client registration included the full redirection URI, the authorization server MUST compare the two URIs using simple string comparison as defined in [RFC3986] Section 6.2.1.
* https://tools.ietf.org/html/rfc6819#section-4.4.1.7
- The authorization server may also enforce the usage and validation of pre-registered redirect URIs (see Section 5.2.3.5). This will allow for early recognition of authorization "code" disclosure to counterfeit clients.
- The attacker will need to use another redirect URI for its authorization process rather than the target web site because it needs to intercept the flow. So, if the authorization server associates the authorization "code" with the redirect URI of a particular end-user authorization and validates this redirect URI with the redirect URI passed to the token's endpoint, such an attack is detected (see Section 5.2.4.5).
func NewContext ¶
func StringInSlice ¶
StringInSlice returns true if needle exists in haystack
Types ¶
type AccessRequest ¶
type AccessRequest struct { GrantType string HandledGrantType []string RequestedAt time.Time Client client.Client Scopes Arguments GrantedScopes []string }
func NewAccessRequest ¶
func NewAccessRequest() *AccessRequest
func (*AccessRequest) DidHandleGrantType ¶
func (a *AccessRequest) DidHandleGrantType() bool
func (*AccessRequest) GetClient ¶
func (a *AccessRequest) GetClient() client.Client
func (*AccessRequest) GetGrantType ¶
func (a *AccessRequest) GetGrantType() string
func (*AccessRequest) GetGrantedScopes ¶
func (a *AccessRequest) GetGrantedScopes() Arguments
func (*AccessRequest) GetRequestedAt ¶
func (a *AccessRequest) GetRequestedAt() time.Time
func (*AccessRequest) GetScopes ¶
func (a *AccessRequest) GetScopes() Arguments
func (*AccessRequest) GrantScope ¶
func (a *AccessRequest) GrantScope(scope string)
func (*AccessRequest) SetGrantTypeHandled ¶
func (a *AccessRequest) SetGrantTypeHandled(name string)
func (*AccessRequest) SetScopes ¶
func (a *AccessRequest) SetScopes(s Arguments)
type AccessRequester ¶
type AccessRequester interface { // GetGrantType returns the requests grant type. GetGrantType() string // GetClient returns the requests client. GetClient() client.Client // GetRequestedAt returns the time the request was created. GetRequestedAt() time.Time // GetScopes returns the request's scopes. GetScopes() Arguments // SetScopes sets the request's scopes. SetScopes(Arguments) // GetGrantScopes returns all granted scopes. GetGrantedScopes() Arguments // GrantScope marks a request's scope as granted. GrantScope(string) // SetGrantTypeHandled marks a grant type as handled indicating that the response type is supported. SetGrantTypeHandled(string) // DidHandleGrantType returns if the requested grant type has been handled correctly. DidHandleGrantType() bool }
type AccessResponder ¶
type AccessResponder interface { SetExtra(key string, value interface{}) GetExtra(key string) interface{} SetAccessToken(string) SetTokenType(string) GetAccessToken() string GetTokenType() string ToMap() map[string]interface{} }
func NewAccessResponse ¶
func NewAccessResponse() AccessResponder
type AccessResponse ¶
func (*AccessResponse) GetAccessToken ¶
func (a *AccessResponse) GetAccessToken() string
func (*AccessResponse) GetExtra ¶
func (a *AccessResponse) GetExtra(key string) interface{}
func (*AccessResponse) GetTokenType ¶
func (a *AccessResponse) GetTokenType() string
func (*AccessResponse) SetAccessToken ¶
func (a *AccessResponse) SetAccessToken(token string)
func (*AccessResponse) SetExtra ¶
func (a *AccessResponse) SetExtra(key string, value interface{})
func (*AccessResponse) SetTokenType ¶
func (a *AccessResponse) SetTokenType(name string)
func (*AccessResponse) ToMap ¶
func (a *AccessResponse) ToMap() map[string]interface{}
type AuthorizeEndpointHandler ¶
type AuthorizeEndpointHandler interface { // HandleAuthorizeRequest handles an authorize endpoint request. To extend the handler's capabilities, the http request // is passed along, if further information retrieval is required. If the handler feels that he is not responsible for // the authorize request, he must return nil and NOT modify session nor responder neither requester. // // The following spec is a good example of what HandleAuthorizeRequest should do. // * https://tools.ietf.org/html/rfc6749#section-3.1.1 // response_type REQUIRED. // The value MUST be one of "code" for requesting an // authorization code as described by Section 4.1.1, "token" for // requesting an access token (implicit grant) as described by // Section 4.2.1, or a registered extension value as described by Section 8.4. HandleAuthorizeEndpointRequest(ctx context.Context, req *http.Request, requester AuthorizeRequester, responder AuthorizeResponder, session interface{}) error }
type AuthorizeEndpointHandlers ¶
type AuthorizeEndpointHandlers map[string]AuthorizeEndpointHandler
AuthorizeEndpointHandlers is a list of AuthorizeEndpointHandler
func (AuthorizeEndpointHandlers) Add ¶
func (a AuthorizeEndpointHandlers) Add(key string, h AuthorizeEndpointHandler)
Add adds an AuthorizeEndpointHandler to this list
type AuthorizeRequest ¶
type AuthorizeRequest struct { ResponseTypes Arguments Client Client Scopes Arguments RedirectURI *url.URL State string RequestedAt time.Time HandledResponseTypes Arguments GrantedScopes []string }
AuthorizeRequest is an implementation of AuthorizeRequester
func NewAuthorizeRequest ¶
func NewAuthorizeRequest() *AuthorizeRequest
func (*AuthorizeRequest) DidHandleAllResponseTypes ¶
func (d *AuthorizeRequest) DidHandleAllResponseTypes() bool
func (*AuthorizeRequest) GetClient ¶
func (d *AuthorizeRequest) GetClient() Client
func (*AuthorizeRequest) GetGrantedScopes ¶
func (a *AuthorizeRequest) GetGrantedScopes() Arguments
func (*AuthorizeRequest) GetRedirectURI ¶
func (d *AuthorizeRequest) GetRedirectURI() *url.URL
func (*AuthorizeRequest) GetRequestedAt ¶
func (d *AuthorizeRequest) GetRequestedAt() time.Time
func (*AuthorizeRequest) GetResponseTypes ¶
func (d *AuthorizeRequest) GetResponseTypes() Arguments
func (*AuthorizeRequest) GetScopes ¶
func (d *AuthorizeRequest) GetScopes() Arguments
func (*AuthorizeRequest) GetState ¶
func (d *AuthorizeRequest) GetState() string
func (*AuthorizeRequest) GrantScope ¶
func (a *AuthorizeRequest) GrantScope(scope string)
func (*AuthorizeRequest) IsRedirectURIValid ¶
func (d *AuthorizeRequest) IsRedirectURIValid() bool
func (*AuthorizeRequest) SetResponseTypeHandled ¶
func (d *AuthorizeRequest) SetResponseTypeHandled(name string)
func (*AuthorizeRequest) SetScopes ¶
func (a *AuthorizeRequest) SetScopes(s Arguments)
type AuthorizeRequester ¶
type AuthorizeRequester interface { // GetResponseTypes returns the requested response types GetResponseTypes() Arguments // SetResponseTypeHandled marks a response_type (e.g. token or code) as handled indicating that the response type // is supported. SetResponseTypeHandled(string) // DidHandleAllResponseTypes returns if all requested response types have been handled correctly DidHandleAllResponseTypes() bool // GetClient returns this request's client or nil GetClient() Client // GetScopes returns this request's scopes GetScopes() Arguments // GetState returns the request's state GetState() string // GetRequestedAt returns the time the request was issued GetRequestedAt() time.Time // GetRedirectURI returns the requested redirect URI GetRedirectURI() *url.URL // IsRedirectURIValid returns false if the redirect is not rfc-conform (i.e. missing client, not on white list, // or malformed) IsRedirectURIValid() bool // SetScopes sets the request's scopes. SetScopes(Arguments) // GetGrantScopes returns all granted scopes. GetGrantedScopes() Arguments }
AuthorizeRequester represents an authorize request
type AuthorizeResponder ¶
type AuthorizeResponder interface { GetHeader() http.Header AddHeader(key, value string) GetQuery() url.Values AddQuery(key, value string) GetFragment() url.Values AddFragment(key, value string) }
AuthorizeResponder defines fosite's response model
type AuthorizeResponse ¶
AuthorizeResponse is an implementation of AuthorizeResponder
func NewAuthorizeResponse ¶
func NewAuthorizeResponse() *AuthorizeResponse
NewAuthorizeResponse creates a new AuthorizeResponse
func (*AuthorizeResponse) AddFragment ¶
func (a *AuthorizeResponse) AddFragment(key, value string)
func (*AuthorizeResponse) AddHeader ¶
func (a *AuthorizeResponse) AddHeader(key, value string)
func (*AuthorizeResponse) AddQuery ¶
func (a *AuthorizeResponse) AddQuery(key, value string)
func (*AuthorizeResponse) GetFragment ¶
func (a *AuthorizeResponse) GetFragment() url.Values
func (*AuthorizeResponse) GetHeader ¶
func (a *AuthorizeResponse) GetHeader() http.Header
func (*AuthorizeResponse) GetQuery ¶
func (a *AuthorizeResponse) GetQuery() url.Values
type Fosite ¶
type Fosite struct { RequiredScope string Store Storage AuthorizeEndpointHandlers AuthorizeEndpointHandlers TokenEndpointHandlers TokenEndpointHandlers Hasher hash.Hasher // AllowHybridFlow sets if the hybrid flow should be allowed. // More: http://openid.net/specs/openid-connect-core-1_0.html#HybridFlowAuth AllowHybridFlow bool }
Fosite implements OAuth2Provider.
func (*Fosite) NewAccessRequest ¶
func (f *Fosite) NewAccessRequest(ctx context.Context, r *http.Request, session interface{}) (AccessRequester, error)
Implements
- https://tools.ietf.org/html/rfc6749#section-2.3.1 Clients in possession of a client password MAY use the HTTP Basic authentication scheme as defined in [RFC2617] to authenticate with the authorization server. The client identifier is encoded using the "application/x-www-form-urlencoded" encoding algorithm per Appendix B, and the encoded value is used as the username; the client password is encoded using the same algorithm and used as the password. The authorization server MUST support the HTTP Basic authentication scheme for authenticating clients that were issued a client password. Including the client credentials in the request-body using the two parameters is NOT RECOMMENDED and SHOULD be limited to clients unable to directly utilize the HTTP Basic authentication scheme (or other password-based HTTP authentication schemes). The parameters can only be transmitted in the request-body and MUST NOT be included in the request URI.
- https://tools.ietf.org/html/rfc6749#section-3.2.1
- Confidential clients or other clients issued client credentials MUST authenticate with the authorization server as described in Section 2.3 when making requests to the token endpoint.
- If the client type is confidential or the client was issued client credentials (or assigned other authentication requirements), the client MUST authenticate with the authorization server as described in Section 3.2.1.
func (*Fosite) NewAccessResponse ¶
func (f *Fosite) NewAccessResponse(ctx context.Context, req *http.Request, requester AccessRequester, session interface{}) (AccessResponder, error)
func (*Fosite) NewAuthorizeRequest ¶
func (*Fosite) NewAuthorizeResponse ¶
func (o *Fosite) NewAuthorizeResponse(ctx context.Context, r *http.Request, ar AuthorizeRequester, session interface{}) (AuthorizeResponder, error)
func (*Fosite) WriteAccessError ¶
func (c *Fosite) WriteAccessError(rw http.ResponseWriter, requester AccessRequester, err error)
func (*Fosite) WriteAccessResponse ¶
func (c *Fosite) WriteAccessResponse(rw http.ResponseWriter, requester AccessRequester, responder AccessResponder)
func (*Fosite) WriteAuthorizeError ¶
func (c *Fosite) WriteAuthorizeError(rw http.ResponseWriter, ar AuthorizeRequester, err error)
func (*Fosite) WriteAuthorizeResponse ¶
func (c *Fosite) WriteAuthorizeResponse(rw http.ResponseWriter, ar AuthorizeRequester, resp AuthorizeResponder)
type OAuth2Provider ¶
type OAuth2Provider interface { // NewAuthorizeRequest returns an AuthorizeRequest. // // The following specs must be considered in any implementation of this method: // * https://tools.ietf.org/html/rfc6749#section-3.1 // Extension response types MAY contain a space-delimited (%x20) list of // values, where the order of values does not matter (e.g., response // type "a b" is the same as "b a"). The meaning of such composite // response types is defined by their respective specifications. // * https://tools.ietf.org/html/rfc6749#section-3.1.2 // The redirection endpoint URI MUST be an absolute URI as defined by // [RFC3986] Section 4.3. The endpoint URI MAY include an // "application/x-www-form-urlencoded" formatted (per Appendix B) query // component ([RFC3986] Section 3.4), which MUST be retained when adding // additional query parameters. The endpoint URI MUST NOT include a // fragment component. // * https://tools.ietf.org/html/rfc6749#section-3.1.2.2 (everything MUST be implemented) NewAuthorizeRequest(ctx context.Context, req *http.Request) (AuthorizeRequester, error) // NewAuthorizeResponse iterates through all response type handlers and returns their result or // ErrUnsupportedResponseType if none of the handler's were able to handle it. // // The following specs must be considered in any implementation of this method: // * https://tools.ietf.org/html/rfc6749#section-3.1.1 // Extension response types MAY contain a space-delimited (%x20) list of // values, where the order of values does not matter (e.g., response // type "a b" is the same as "b a"). The meaning of such composite // response types is defined by their respective specifications. // If an authorization request is missing the "response_type" parameter, // or if the response type is not understood, the authorization server // MUST return an error response as described in Section 4.1.2.1. NewAuthorizeResponse(ctx context.Context, req *http.Request, requester AuthorizeRequester, session interface{}) (AuthorizeResponder, error) // WriteAuthorizeError returns the error codes to the redirection endpoint or shows the error to the user, if no valid // redirect uri was given. Implements rfc6749#section-4.1.2.1 // // The following specs must be considered in any implementation of this method: // * https://tools.ietf.org/html/rfc6749#section-3.1.2 // The redirection endpoint URI MUST be an absolute URI as defined by // [RFC3986] Section 4.3. The endpoint URI MAY include an // "application/x-www-form-urlencoded" formatted (per Appendix B) query // component ([RFC3986] Section 3.4), which MUST be retained when adding // additional query parameters. The endpoint URI MUST NOT include a // fragment component. // * https://tools.ietf.org/html/rfc6749#section-4.1.2.1 (everything) // * https://tools.ietf.org/html/rfc6749#section-3.1.2.2 (everything MUST be implemented) WriteAuthorizeError(rw http.ResponseWriter, requester AuthorizeRequester, err error) // WriteAuthorizeResponse persists the AuthorizeSession in the store and redirects the user agent to the provided // redirect url or returns an error if storage failed. // // The following specs must be considered in any implementation of this method: // * https://tools.ietf.org/html/rfc6749#rfc6749#section-4.1.2.1 // After completing its interaction with the resource owner, the // authorization server directs the resource owner's user-agent back to // the client. The authorization server redirects the user-agent to the // client's redirection endpoint previously established with the // authorization server during the client registration process or when // making the authorization request. // * https://tools.ietf.org/html/rfc6749#section-3.1.2.2 (everything MUST be implemented) WriteAuthorizeResponse(rw http.ResponseWriter, requester AuthorizeRequester, responder AuthorizeResponder) // NewAccessRequest creates a new access request object and validates // various parameters. // // The following specs must be considered in any implementation of this method: // * https://tools.ietf.org/html/rfc6749#section-3.2 (everything) // * https://tools.ietf.org/html/rfc6749#section-3.2.1 (everything) // // Furthermore the registered handlers should implement their specs accordingly. NewAccessRequest(ctx context.Context, req *http.Request, session interface{}) (AccessRequester, error) // NewAccessResponse creates a new access response and validates that access_token and token_type are set. // // The following specs must be considered in any implementation of this method: // https://tools.ietf.org/html/rfc6749#section-5.1 NewAccessResponse(_ context.Context, req *http.Request, requester AccessRequester, session interface{}) (AccessResponder, error) // WriteAccessError writes an access request error response. // // The following specs must be considered in any implementation of this method: // * https://tools.ietf.org/html/rfc6749#section-5.2 (everything) WriteAccessError(rw http.ResponseWriter, requester AccessRequester, err error) // WriteAccessResponse writes the access response. // // The following specs must be considered in any implementation of this method: // https://tools.ietf.org/html/rfc6749#section-5.1 WriteAccessResponse(rw http.ResponseWriter, requester AccessRequester, responder AccessResponder) }
OAuth2Provider is an interface that enables you to write OAuth2 handlers with only a few lines of code. Check fosite.Fosite for an implementation of this interface.
type RFC6749Error ¶
type RFC6749Error struct { Name string `json:"name"` Description string `json:"description"` Hint string `json:"-"` }
func ErrorToRFC6749Error ¶
func ErrorToRFC6749Error(err error) *RFC6749Error
type Storage ¶
type Storage interface { // GetClient loads the client by its ID or returns an error // if the client does not exist or another error occurred. GetClient(id string) (Client, error) }
Storage defines fosite's minimal storage interface.
type TokenEndpointHandler ¶
type TokenEndpointHandler interface { // HandleAuthorizeRequest handles an authorize request. To extend the handler's capabilities, the http request // is passed along, if further information retrieval is required. If the handler feels that he is not responsible for // the authorize request, he must return nil and NOT modify session nor responder neither requester. // HandleTokenEndpointRequest(ctx context.Context, req *http.Request, requester AccessRequester, responder AccessResponder, session interface{}) error // ValidateTokenEndpointRequest // If the handler feels that he is not responsible for the authorize request, he must return nil and NOT modify // session nor responder neither requester. ValidateTokenEndpointRequest(ctx context.Context, req *http.Request, requester AccessRequester, session interface{}) error }
type TokenEndpointHandlers ¶
type TokenEndpointHandlers map[string]TokenEndpointHandler
TokenEndpointHandlers is a list of TokenEndpointHandler
func (TokenEndpointHandlers) Add ¶
func (t TokenEndpointHandlers) Add(key string, h TokenEndpointHandler)
Add adds an TokenEndpointHandler to this list
Source Files ¶
- access.go
- access_error.go
- access_request.go
- access_request_handler.go
- access_response.go
- access_response_handler.go
- access_write.go
- arguments.go
- authorize_error.go
- authorize_helper.go
- authorize_request.go
- authorize_request_handler.go
- authorize_response.go
- authorize_response_handler.go
- authorize_write.go
- context.go
- errors.go
- fosite.go
- handler.go
- helper.go
- oauth2.go
- storage.go