 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
- func ExtractUserName(token oauth2.Token) (string, error)
- type AuthorizationCodeExchangeRequest
- type AuthorizationGrant
- type AuthorizationGrantRefresher
- type AuthorizationGrantType
- type AuthorizationTokenResponse
- type ClientCredentialsExchangeRequest
- type ClientCredentialsExchanger
- type ClientCredentialsFlow
- type ClientCredentialsFlowOptions
- type ClientCredentialsGrantRefresher
- type ClientCredentialsProvider
- type ConfigBackedCachingProvider
- type DeviceAuthorizationGrantRefresher
- type DeviceCodeCallback
- type DeviceCodeExchangeRequest
- type DeviceCodeFlow
- type DeviceCodeFlowOptions
- type DeviceCodeProvider
- type DeviceCodeRequest
- type DeviceCodeResult
- type DeviceTokenExchanger
- type Flow
- type HTTPAuthTransport
- type Issuer
- type KeyFile
- type KeyFileProvider
- type LocalDeviceCodeProvider
- type LocalDeviceCodeProviderOptions
- type OIDCWellKnownEndpoints
- type RefreshTokenExchangeRequest
- type TokenError
- type TokenErrorResponse
- type TokenResult
- type TokenRetriever
- func (ce *TokenRetriever) ExchangeClientCredentials(req ClientCredentialsExchangeRequest) (*TokenResult, error)
- func (ce *TokenRetriever) ExchangeCode(req AuthorizationCodeExchangeRequest) (*TokenResult, error)
- func (ce *TokenRetriever) ExchangeDeviceCode(ctx context.Context, req DeviceCodeExchangeRequest) (*TokenResult, error)
- func (ce *TokenRetriever) ExchangeRefreshToken(req RefreshTokenExchangeRequest) (*TokenResult, error)
 
Constants ¶
const ( ClaimNameUserName = "https://pulsar.apache.org/username" ClaimNameName = "name" ClaimNameSubject = "sub" )
const ( FILE = "file://" DATA = "data://" )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AuthorizationCodeExchangeRequest ¶
type AuthorizationCodeExchangeRequest struct {
	TokenEndpoint string
	ClientID      string
	CodeVerifier  string
	Code          string
	RedirectURI   string
}
    AuthorizationCodeExchangeRequest is used to request the exchange of an authorization code for a token
type AuthorizationGrant ¶
type AuthorizationGrant struct {
	// Type describes the type of authorization grant represented by this structure
	Type AuthorizationGrantType `json:"type"`
	// Audience is the intended audience of the access tokens
	Audience string `json:"audience,omitempty"`
	// ClientID is an OAuth2 client identifier used by some flows
	ClientID string `json:"client_id,omitempty"`
	// ClientCredentials is credentials data for the client credentials grant type
	ClientCredentials *KeyFile `json:"client_credentials,omitempty"`
	// the token endpoint
	TokenEndpoint string `json:"token_endpoint"`
	// Token contains an access token in the client credentials grant type,
	// and a refresh token in the device authorization grant type
	Token *oauth2.Token `json:"token,omitempty"`
	// Scopes contains the scopes associated with the grant, or the scopes
	// to request in the client credentials grant type
	Scopes []string `json:"scopes,omitempty"`
}
    AuthorizationGrant is a credential representing the resource owner's authorization to access its protected resources, and is used by the client to obtain an access token
type AuthorizationGrantRefresher ¶
type AuthorizationGrantRefresher interface {
	// Refresh refreshes an authorization grant to contain a fresh access token
	Refresh(grant *AuthorizationGrant) (*AuthorizationGrant, error)
}
    AuthorizationGrantRefresher refreshes OAuth 2.0 authorization grant
type AuthorizationGrantType ¶
type AuthorizationGrantType string
const ( // GrantTypeClientCredentials represents a client credentials grant GrantTypeClientCredentials AuthorizationGrantType = "client_credentials" // GrantTypeDeviceCode represents a device code grant GrantTypeDeviceCode AuthorizationGrantType = "device_code" )
type AuthorizationTokenResponse ¶
type AuthorizationTokenResponse struct {
	AccessToken  string `json:"access_token"`
	ExpiresIn    int    `json:"expires_in"`
	IDToken      string `json:"id_token"`
	RefreshToken string `json:"refresh_token"`
	TokenType    string `json:"token_type"`
}
    AuthorizationTokenResponse is the HTTP response when asking for a new token. Note that not all fields will contain data based on what kind of request was sent
type ClientCredentialsExchangeRequest ¶
type ClientCredentialsExchangeRequest struct {
	TokenEndpoint string
	ClientID      string
	ClientSecret  string
	Audience      string
	Scopes        []string
}
    ClientCredentialsExchangeRequest is used to request the exchange of client credentials for a token
type ClientCredentialsExchanger ¶
type ClientCredentialsExchanger interface {
	ExchangeClientCredentials(req ClientCredentialsExchangeRequest) (*TokenResult, error)
}
    ClientCredentialsExchanger abstracts exchanging client credentials for tokens
type ClientCredentialsFlow ¶
type ClientCredentialsFlow struct {
	// contains filtered or unexported fields
}
    ClientCredentialsFlow takes care of the mechanics needed for getting an access token using the OAuth 2.0 "Client Credentials Flow"
func NewDefaultClientCredentialsFlow ¶
func NewDefaultClientCredentialsFlow(options ClientCredentialsFlowOptions) (*ClientCredentialsFlow, error)
NewDefaultClientCredentialsFlow provides an easy way to build up a default client credentials flow with all the correct configuration.
func (*ClientCredentialsFlow) Authorize ¶
func (c *ClientCredentialsFlow) Authorize(audience string) (*AuthorizationGrant, error)
type ClientCredentialsGrantRefresher ¶
type ClientCredentialsGrantRefresher struct {
	// contains filtered or unexported fields
}
    func NewDefaultClientCredentialsGrantRefresher ¶
func NewDefaultClientCredentialsGrantRefresher(clock clock.Clock) (*ClientCredentialsGrantRefresher, error)
func (*ClientCredentialsGrantRefresher) Refresh ¶
func (g *ClientCredentialsGrantRefresher) Refresh(grant *AuthorizationGrant) (*AuthorizationGrant, error)
type ClientCredentialsProvider ¶
ClientCredentialsProvider abstracts getting client credentials
type ConfigBackedCachingProvider ¶
type ConfigBackedCachingProvider struct {
	// contains filtered or unexported fields
}
    ConfigBackedCachingProvider wraps a configProvider in order to conform to the cachingProvider interface
func NewConfigBackedCachingProvider ¶
func NewConfigBackedCachingProvider(clientID, audience string, config configProvider) *ConfigBackedCachingProvider
NewConfigBackedCachingProvider builds and returns a CachingTokenProvider that utilizes a configProvider to cache tokens
func (*ConfigBackedCachingProvider) CacheTokens ¶
func (c *ConfigBackedCachingProvider) CacheTokens(toCache *TokenResult) error
CacheTokens caches the id and refresh token from TokenResult in the configProvider
func (*ConfigBackedCachingProvider) GetTokens ¶
func (c *ConfigBackedCachingProvider) GetTokens() (*TokenResult, error)
GetTokens gets the tokens from the cache and returns them as a TokenResult
type DeviceAuthorizationGrantRefresher ¶
type DeviceAuthorizationGrantRefresher struct {
	// contains filtered or unexported fields
}
    func NewDefaultDeviceAuthorizationGrantRefresher ¶
func NewDefaultDeviceAuthorizationGrantRefresher(clock clock.Clock) (*DeviceAuthorizationGrantRefresher, error)
NewDefaultDeviceAuthorizationGrantRefresher constructs a grant refresher based on the result of the device authorization flow.
func (*DeviceAuthorizationGrantRefresher) Refresh ¶
func (g *DeviceAuthorizationGrantRefresher) Refresh(grant *AuthorizationGrant) (*AuthorizationGrant, error)
type DeviceCodeCallback ¶
type DeviceCodeCallback func(code *DeviceCodeResult) error
type DeviceCodeExchangeRequest ¶
type DeviceCodeExchangeRequest struct {
	TokenEndpoint string
	ClientID      string
	DeviceCode    string
	PollInterval  time.Duration
}
    DeviceCodeExchangeRequest is used to request the exchange of a device code for a token
type DeviceCodeFlow ¶
type DeviceCodeFlow struct {
	// contains filtered or unexported fields
}
    DeviceCodeFlow takes care of the mechanics needed for getting an access token using the OAuth 2.0 "Device Code Flow"
func NewDefaultDeviceCodeFlow ¶
func NewDefaultDeviceCodeFlow(options DeviceCodeFlowOptions, callback DeviceCodeCallback) (*DeviceCodeFlow, error)
NewDefaultDeviceCodeFlow provides an easy way to build up a default device code flow with all the correct configuration. If refresh tokens should be allowed pass in true for <allowRefresh>
func (*DeviceCodeFlow) Authorize ¶
func (p *DeviceCodeFlow) Authorize(audience string) (*AuthorizationGrant, error)
type DeviceCodeFlowOptions ¶
type DeviceCodeProvider ¶
type DeviceCodeProvider interface {
	GetCode(audience string, additionalScopes ...string) (*DeviceCodeResult, error)
}
    AuthorizationCodeProvider abstracts getting an authorization code
type DeviceCodeRequest ¶
type DeviceCodeResult ¶
type DeviceCodeResult struct {
	DeviceCode              string `json:"device_code"`
	UserCode                string `json:"user_code"`
	VerificationURI         string `json:"verification_uri"`
	VerificationURIComplete string `json:"verification_uri_complete"`
	ExpiresIn               int    `json:"expires_in"`
	Interval                int    `json:"interval"`
}
    DeviceCodeResult holds the device code gotten from the device code URL.
type DeviceTokenExchanger ¶
type DeviceTokenExchanger interface {
	ExchangeDeviceCode(ctx context.Context, req DeviceCodeExchangeRequest) (*TokenResult, error)
	ExchangeRefreshToken(req RefreshTokenExchangeRequest) (*TokenResult, error)
}
    DeviceTokenExchanger abstracts exchanging for tokens
type Flow ¶
type Flow interface {
	// Authorize obtains an authorization grant based on an OAuth 2.0 authorization flow.
	// The method returns a grant which may contain an initial access token.
	Authorize(audience string) (*AuthorizationGrant, error)
}
    Flow abstracts an OAuth 2.0 authentication and authorization flow
type HTTPAuthTransport ¶
HTTPAuthTransport abstracts how an HTTP exchange request is sent and received
type KeyFileProvider ¶
type KeyFileProvider struct {
	KeyFile string
}
    func NewClientCredentialsProviderFromKeyFile ¶
func NewClientCredentialsProviderFromKeyFile(keyFile string) *KeyFileProvider
func (*KeyFileProvider) GetClientCredentials ¶
func (k *KeyFileProvider) GetClientCredentials() (*KeyFile, error)
type LocalDeviceCodeProvider ¶
type LocalDeviceCodeProvider struct {
	// contains filtered or unexported fields
}
    DeviceCodeProvider holds the information needed to easily get a device code locally.
func NewLocalDeviceCodeProvider ¶
func NewLocalDeviceCodeProvider( options LocalDeviceCodeProviderOptions, oidcWellKnownEndpoints OIDCWellKnownEndpoints, authTransport HTTPAuthTransport) *LocalDeviceCodeProvider
NewLocalDeviceCodeProvider allows for the easy setup of LocalDeviceCodeProvider
func (*LocalDeviceCodeProvider) GetCode ¶
func (cp *LocalDeviceCodeProvider) GetCode(audience string, additionalScopes ...string) (*DeviceCodeResult, error)
GetCode obtains a new device code. Additional scopes beyond openid and email can be sent by passing in arguments for <additionalScopes>.
type LocalDeviceCodeProviderOptions ¶
type LocalDeviceCodeProviderOptions struct {
	ClientID string
}
    type OIDCWellKnownEndpoints ¶
type OIDCWellKnownEndpoints struct {
	AuthorizationEndpoint       string `json:"authorization_endpoint"`
	TokenEndpoint               string `json:"token_endpoint"`
	DeviceAuthorizationEndpoint string `json:"device_authorization_endpoint"`
}
    OIDCWellKnownEndpoints holds the well known OIDC endpoints
func GetOIDCWellKnownEndpointsFromIssuerURL ¶
func GetOIDCWellKnownEndpointsFromIssuerURL(issuerURL string) (*OIDCWellKnownEndpoints, error)
GetOIDCWellKnownEndpointsFromIssuerURL gets the well known endpoints for the passed in issuer url
type RefreshTokenExchangeRequest ¶
type RefreshTokenExchangeRequest struct {
	TokenEndpoint string
	ClientID      string
	RefreshToken  string
}
    RefreshTokenExchangeRequest is used to request the exchange of a refresh token for a refreshed token
type TokenError ¶
func (*TokenError) Error ¶
func (e *TokenError) Error() string
type TokenErrorResponse ¶
type TokenErrorResponse struct {
	Error            string `json:"error"`
	ErrorDescription string `json:"error_description"`
}
    TokenErrorResponse is used to parse error responses from the token endpoint
type TokenResult ¶
type TokenResult struct {
	AccessToken  string `json:"access_token"`
	IDToken      string `json:"id_token"`
	RefreshToken string `json:"refresh_token"`
	ExpiresIn    int    `json:"expires_in"`
}
    TokenResult holds token information
type TokenRetriever ¶
type TokenRetriever struct {
	// contains filtered or unexported fields
}
    TokenRetriever implements AuthTokenExchanger in order to facilitate getting Tokens
func NewTokenRetriever ¶
func NewTokenRetriever(authTransport HTTPAuthTransport) *TokenRetriever
NewTokenRetriever allows a TokenRetriever the internal of a new TokenRetriever to be easily set up
func (*TokenRetriever) ExchangeClientCredentials ¶
func (ce *TokenRetriever) ExchangeClientCredentials(req ClientCredentialsExchangeRequest) (*TokenResult, error)
ExchangeClientCredentials uses the ClientCredentialsExchangeRequest to exchange client credentials for tokens
func (*TokenRetriever) ExchangeCode ¶
func (ce *TokenRetriever) ExchangeCode(req AuthorizationCodeExchangeRequest) (*TokenResult, error)
ExchangeCode uses the AuthCodeExchangeRequest to exchange an authorization code for tokens
func (*TokenRetriever) ExchangeDeviceCode ¶
func (ce *TokenRetriever) ExchangeDeviceCode(ctx context.Context, req DeviceCodeExchangeRequest) (*TokenResult, error)
ExchangeDeviceCode uses the DeviceCodeExchangeRequest to exchange a device code for tokens
func (*TokenRetriever) ExchangeRefreshToken ¶
func (ce *TokenRetriever) ExchangeRefreshToken(req RefreshTokenExchangeRequest) (*TokenResult, error)
ExchangeRefreshToken uses the RefreshTokenExchangeRequest to exchange a refresh token for refreshed tokens