Documentation ¶
Index ¶
Constants ¶
const (
HostedGrantType = "urn:ietf:params:oauth:grant-type:device_code"
)
HostedGrantType grant type for device flow on Hosted
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthFlowInfo ¶
type AuthFlowInfo 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"` }
AuthFlowInfo holds information for the OAuth 2.0 authorization flow
type Claims ¶
type Claims struct {
Audience interface{} `json:"aud"`
}
Claims used when validating the access token
type DeviceAuthorizationFlow ¶
type DeviceAuthorizationFlow struct { HTTPClient HTTPClient // contains filtered or unexported fields }
DeviceAuthorizationFlow implements the OAuthFlow interface, for the Device Authorization Flow.
func NewDeviceAuthorizationFlow ¶
func NewDeviceAuthorizationFlow(config internal.DeviceAuthProviderConfig) (*DeviceAuthorizationFlow, error)
NewDeviceAuthorizationFlow returns device authorization flow client
func (*DeviceAuthorizationFlow) GetClientID ¶
func (d *DeviceAuthorizationFlow) GetClientID(ctx context.Context) string
GetClientID returns the provider client id
func (*DeviceAuthorizationFlow) RequestAuthInfo ¶
func (d *DeviceAuthorizationFlow) RequestAuthInfo(ctx context.Context) (AuthFlowInfo, error)
RequestAuthInfo requests a device code login flow information from Hosted
func (*DeviceAuthorizationFlow) WaitToken ¶
func (d *DeviceAuthorizationFlow) WaitToken(ctx context.Context, info AuthFlowInfo) (TokenInfo, error)
WaitToken waits user's login and authorize the app. Once the user's authorize it retrieves the access token from Hosted's endpoint and validates it before returning
type HTTPClient ¶
HTTPClient http client interface for API calls
type OAuthFlow ¶
type OAuthFlow interface { RequestAuthInfo(ctx context.Context) (AuthFlowInfo, error) WaitToken(ctx context.Context, info AuthFlowInfo) (TokenInfo, error) GetClientID(ctx context.Context) string }
OAuthFlow represents an interface for authorization using different OAuth 2.0 flows
func NewOAuthFlow ¶
func NewOAuthFlow(ctx context.Context, config *internal.Config, isLinuxDesktopClient bool) (OAuthFlow, error)
NewOAuthFlow initializes and returns the appropriate OAuth flow based on the management configuration
It starts by initializing the PKCE.If this process fails, it resorts to the Device Code Flow, and if that also fails, the authentication process is deemed unsuccessful
On Linux distros without desktop environment support, it only tries to initialize the Device Code Flow
type PKCEAuthorizationFlow ¶
type PKCEAuthorizationFlow struct {
// contains filtered or unexported fields
}
PKCEAuthorizationFlow implements the OAuthFlow interface for the Authorization Code Flow with PKCE.
func NewPKCEAuthorizationFlow ¶
func NewPKCEAuthorizationFlow(config internal.PKCEAuthProviderConfig) (*PKCEAuthorizationFlow, error)
NewPKCEAuthorizationFlow returns new PKCE authorization code flow.
func (*PKCEAuthorizationFlow) GetClientID ¶
func (p *PKCEAuthorizationFlow) GetClientID(_ context.Context) string
GetClientID returns the provider client id
func (*PKCEAuthorizationFlow) RequestAuthInfo ¶
func (p *PKCEAuthorizationFlow) RequestAuthInfo(ctx context.Context) (AuthFlowInfo, error)
RequestAuthInfo requests a authorization code login flow information.
func (*PKCEAuthorizationFlow) WaitToken ¶
func (p *PKCEAuthorizationFlow) WaitToken(ctx context.Context, _ AuthFlowInfo) (TokenInfo, error)
WaitToken waits for the OAuth token in the PKCE Authorization Flow. It starts an HTTP server to receive the OAuth token callback and waits for the token or an error. Once the token is received, it is converted to TokenInfo and validated before returning.
type RequestDeviceCodePayload ¶
type RequestDeviceCodePayload struct { Audience string `json:"audience"` ClientID string `json:"client_id"` Scope string `json:"scope"` }
RequestDeviceCodePayload used for request device code payload for auth0
type TokenInfo ¶
type TokenInfo struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` IDToken string `json:"id_token"` TokenType string `json:"token_type"` ExpiresIn int `json:"expires_in"` UseIDToken bool `json:"-"` }
TokenInfo holds information of issued access token
func (TokenInfo) GetTokenToUse ¶
GetTokenToUse returns either the access or id token based on UseIDToken field
type TokenRequestPayload ¶
type TokenRequestPayload struct { GrantType string `json:"grant_type"` DeviceCode string `json:"device_code,omitempty"` ClientID string `json:"client_id"` RefreshToken string `json:"refresh_token,omitempty"` }
TokenRequestPayload used for requesting the auth0 token
type TokenRequestResponse ¶
type TokenRequestResponse struct { Error string `json:"error"` ErrorDescription string `json:"error_description"` TokenInfo }
TokenRequestResponse used for parsing Hosted token's response