Documentation
¶
Index ¶
- func IsGithubDotComURL(str string) bool
- func IsInvalidTokenError(err error) bool
- type AppInstallation
- type Config
- func (c *Config) AppInstallations(ctx context.Context, token string) ([]codersdk.ExternalAuthAppInstallation, bool, error)
- func (c *Config) GenerateTokenExtra(token *oauth2.Token) (pqtype.NullRawMessage, error)
- func (c *Config) RefreshToken(ctx context.Context, db database.Store, ...) (database.ExternalAuthLink, error)
- func (c *Config) RevokeToken(ctx context.Context, link database.ExternalAuthLink) (bool, error)
- func (c *Config) TokenRevocationRequest(ctx context.Context, link database.ExternalAuthLink) (*http.Request, error)
- func (c *Config) TokenRevocationRequestGitHub(ctx context.Context, link database.ExternalAuthLink) (*http.Request, error)
- func (c *Config) TokenRevocationRequestRFC7009(ctx context.Context, link database.ExternalAuthLink) (*http.Request, error)
- func (c *Config) TokenRevocationResponseOk(res *http.Response) bool
- func (c *Config) ValidateToken(ctx context.Context, link *oauth2.Token) (bool, *codersdk.ExternalAuthUser, error)
- type DeviceAuth
- type ExchangeDeviceCodeResponse
- type InvalidTokenError
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsGithubDotComURL ¶ added in v2.14.0
IsGithubDotComURL returns true if the given URL is a github.com URL.
func IsInvalidTokenError ¶ added in v2.13.0
Types ¶
type AppInstallation ¶
type Config ¶
type Config struct {
promoauth.InstrumentedOAuth2Config
// ID is a unique identifier for the authenticator.
ID string
// Type is the type of provider.
Type string
ClientID string
ClientSecret string
// DeviceAuth is set if the provider uses the device flow.
DeviceAuth *DeviceAuth
// DisplayName is the name of the provider to display to the user.
DisplayName string
// DisplayIcon is the path to an image that will be displayed to the user.
DisplayIcon string
// ExtraTokenKeys is a list of extra properties to
// store in the database returned from the token endpoint.
//
// e.g. Slack returns `authed_user` in the token which is
// a payload that contains information about the authenticated
// user.
ExtraTokenKeys []string
// NoRefresh stops Coder from using the refresh token
// to renew the access token.
//
// Some organizations have security policies that require
// re-authentication for every token.
NoRefresh bool
// ValidateURL ensures an access token is valid before
// returning it to the user. If omitted, tokens will
// not be validated before being returned.
ValidateURL string
RevokeURL string
RevokeTimeout time.Duration
// Regex is a Regexp matched against URLs for
// a Git clone. e.g. "Username for 'https://github.com':"
// The regex would be `github\.com`..
Regex *regexp.Regexp
// AppInstallURL is for GitHub App's (and hopefully others eventually)
// to provide a link to install the app. There's installation
// of the application, and user authentication. It's possible
// for the user to authenticate but the application to not.
AppInstallURL string
// AppInstallationsURL is an API endpoint that returns a list of
// installations for the user. This is used for GitHub Apps.
AppInstallationsURL string
// MCPURL is the endpoint that clients must use to communicate with the associated
// MCP server.
MCPURL string
// MCPToolAllowRegex is a [regexp.Regexp] to match tools which are explicitly allowed to be
// injected into Coder AI Bridge upstream requests.
// In the case of conflicts, [MCPToolDenylistPattern] overrides items evaluated by this list.
// This field can be nil if unspecified in the config.
MCPToolAllowRegex *regexp.Regexp
// MCPToolDenyRegex is a [regexp.Regexp] to match tools which are explicitly NOT allowed to be
// injected into Coder AI Bridge upstream requests.
// In the case of conflicts, items evaluated by this list override [MCPToolAllowRegex].
// This field can be nil if unspecified in the config.
MCPToolDenyRegex *regexp.Regexp
}
Config is used for authentication for Git operations.
func ConvertConfig ¶
func ConvertConfig(instrument *promoauth.Factory, entries []codersdk.ExternalAuthConfig, accessURL *url.URL) ([]*Config, error)
ConvertConfig converts the SDK configuration entry format to the parsed and ready-to-consume in coderd provider type.
func (*Config) AppInstallations ¶
func (c *Config) AppInstallations(ctx context.Context, token string) ([]codersdk.ExternalAuthAppInstallation, bool, error)
AppInstallations returns a list of app installations for the given token. If the provider does not support app installations, it returns nil.
func (*Config) GenerateTokenExtra ¶ added in v2.3.0
GenerateTokenExtra generates the extra token data to store in the database.
func (*Config) RefreshToken ¶
func (c *Config) RefreshToken(ctx context.Context, db database.Store, externalAuthLink database.ExternalAuthLink) (database.ExternalAuthLink, error)
RefreshToken automatically refreshes the token if expired and permitted. If an error is returned, the token is either invalid, or an error occurred. Use 'IsInvalidTokenError(err)' to determine the difference.
func (*Config) RevokeToken ¶ added in v2.27.0
func (*Config) TokenRevocationRequest ¶ added in v2.27.0
func (*Config) TokenRevocationRequestGitHub ¶ added in v2.27.0
func (*Config) TokenRevocationRequestRFC7009 ¶ added in v2.27.0
func (*Config) TokenRevocationResponseOk ¶ added in v2.27.0
type DeviceAuth ¶
type DeviceAuth struct {
// Config is provided for the http client method.
Config promoauth.InstrumentedOAuth2Config
ClientID string
TokenURL string
Scopes []string
CodeURL string
}
func (*DeviceAuth) AuthorizeDevice ¶
func (c *DeviceAuth) AuthorizeDevice(ctx context.Context) (*codersdk.ExternalAuthDevice, error)
AuthorizeDevice begins the device authorization flow. See: https://tools.ietf.org/html/rfc8628#section-3.1
func (*DeviceAuth) ExchangeDeviceCode ¶
func (c *DeviceAuth) ExchangeDeviceCode(ctx context.Context, deviceCode string) (*oauth2.Token, error)
ExchangeDeviceCode exchanges a device code for an access token. The boolean returned indicates whether the device code is still pending and the caller should try again.
type InvalidTokenError ¶ added in v2.13.0
type InvalidTokenError string
InvalidTokenError is a case where the "RefreshToken" failed to complete as a result of invalid credentials. Error contains the reason of the failure.
func (InvalidTokenError) Error ¶ added in v2.13.0
func (e InvalidTokenError) Error() string