Documentation
¶
Overview ¶
Package plugin provides the shared contract between scafctl (host) and plugin binaries. Plugin authors implement ProviderPlugin and/or AuthHandlerPlugin, then call Serve() or ServeAuthHandler() from main().
Index ¶
- Constants
- Variables
- func ProtoToDescriptor(pd *proto.ProviderDescriptor) (*provider.Descriptor, error)
- func Serve(impl ProviderPlugin)
- func ServeAuthHandler(impl AuthHandlerPlugin)
- func WithHostClient(ctx context.Context, client *HostServiceClient) context.Context
- type AuthHandlerGRPCClient
- type AuthHandlerGRPCPlugin
- type AuthHandlerGRPCServer
- func (s *AuthHandlerGRPCServer) ActivateServerMode(ctx context.Context, req *proto.ActivateServerModeRequest) (*proto.ActivateServerModeResponse, error)
- func (s *AuthHandlerGRPCServer) ConfigureAuthHandler(ctx context.Context, req *proto.ConfigureAuthHandlerRequest) (*proto.ConfigureAuthHandlerResponse, error)
- func (s *AuthHandlerGRPCServer) DetectAvailableFlows(ctx context.Context, req *proto.DetectAvailableFlowsRequest) (*proto.DetectAvailableFlowsResponse, error)
- func (s *AuthHandlerGRPCServer) GetAuthHandlers(ctx context.Context, _ *proto.GetAuthHandlersRequest) (*proto.GetAuthHandlersResponse, error)
- func (s *AuthHandlerGRPCServer) GetStatus(ctx context.Context, req *proto.GetStatusRequest) (*proto.GetStatusResponse, error)
- func (s *AuthHandlerGRPCServer) GetToken(ctx context.Context, req *proto.GetTokenRequest) (*proto.GetTokenResponse, error)
- func (s *AuthHandlerGRPCServer) ListCachedTokens(ctx context.Context, req *proto.ListCachedTokensRequest) (*proto.ListCachedTokensResponse, error)
- func (s *AuthHandlerGRPCServer) Login(req *proto.LoginRequest, ...) error
- func (s *AuthHandlerGRPCServer) Logout(ctx context.Context, req *proto.LogoutRequest) (*proto.LogoutResponse, error)
- func (s *AuthHandlerGRPCServer) PurgeExpiredTokens(ctx context.Context, req *proto.PurgeExpiredTokensRequest) (*proto.PurgeExpiredTokensResponse, error)
- func (s *AuthHandlerGRPCServer) StopAuthHandler(ctx context.Context, req *proto.StopAuthHandlerRequest) (*proto.StopAuthHandlerResponse, error)
- type AuthHandlerInfo
- type AuthHandlerPlugin
- type DeviceCodePrompt
- type FlowAvailability
- type GRPCClient
- type GRPCPlugin
- type GRPCServer
- func (s *GRPCServer) ConfigureProvider(ctx context.Context, req *proto.ConfigureProviderRequest) (*proto.ConfigureProviderResponse, error)
- func (s *GRPCServer) DescribeWhatIf(ctx context.Context, req *proto.DescribeWhatIfRequest) (*proto.DescribeWhatIfResponse, error)
- func (s *GRPCServer) ExecuteProvider(ctx context.Context, req *proto.ExecuteProviderRequest) (*proto.ExecuteProviderResponse, error)
- func (s *GRPCServer) ExecuteProviderStream(req *proto.ExecuteProviderRequest, ...) error
- func (s *GRPCServer) ExtractDependencies(ctx context.Context, req *proto.ExtractDependenciesRequest) (*proto.ExtractDependenciesResponse, error)
- func (s *GRPCServer) GetProviderDescriptor(ctx context.Context, req *proto.GetProviderDescriptorRequest) (*proto.GetProviderDescriptorResponse, error)
- func (s *GRPCServer) GetProviders(ctx context.Context, _ *proto.GetProvidersRequest) (*proto.GetProvidersResponse, error)
- func (s *GRPCServer) StopProvider(ctx context.Context, req *proto.StopProviderRequest) (*proto.StopProviderResponse, error)
- type HandshakeConfigData
- type HostServiceClient
- func (c *HostServiceClient) DeleteSecret(ctx context.Context, name string) error
- func (c *HostServiceClient) GetAuthGroups(ctx context.Context, handler string) ([]string, error)
- func (c *HostServiceClient) GetAuthIdentity(ctx context.Context, handler, scope string) (*proto.Claims, error)
- func (c *HostServiceClient) GetAuthToken(ctx context.Context, handler, scope string, minValidFor int64, ...) (*proto.GetAuthTokenResponse, error)
- func (c *HostServiceClient) GetSecret(ctx context.Context, name string) (string, bool, error)
- func (c *HostServiceClient) ListAuthHandlers(ctx context.Context) (handlers []string, defaultHandler string, err error)
- func (c *HostServiceClient) ListSecrets(ctx context.Context, pattern string) ([]string, error)
- func (c *HostServiceClient) SetSecret(ctx context.Context, name, value string) error
- type LoginRequest
- type LoginResponse
- type LoginStreamMessage
- type LogoutRequest
- type ProviderConfig
- type ProviderPlugin
- type SecretRef
- type ServerMode
- type StatusRequest
- type StreamChunk
- type TokenRequest
- type TokenResponse
Constants ¶
const ( PluginName = "provider" AuthHandlerPluginName = "auth-handler" )
const AuthHandlerPluginProtocolVersion int32 = 2
AuthHandlerPluginProtocolVersion is the current auth handler plugin protocol version.
const PluginProtocolVersion int32 = 2
PluginProtocolVersion is the current plugin protocol version.
Variables ¶
var ErrStreamingNotSupported = errors.New("streaming execution not supported")
ErrStreamingNotSupported is returned by ExecuteProviderStream when the plugin does not support streaming execution.
Functions ¶
func ProtoToDescriptor ¶
func ProtoToDescriptor(pd *proto.ProviderDescriptor) (*provider.Descriptor, error)
ProtoToDescriptor converts proto.ProviderDescriptor to provider.Descriptor.
func Serve ¶
func Serve(impl ProviderPlugin)
Serve is a helper function for plugin implementers to serve their provider plugins.
func ServeAuthHandler ¶
func ServeAuthHandler(impl AuthHandlerPlugin)
ServeAuthHandler is a helper function for plugin implementers to serve their auth handler plugins.
func WithHostClient ¶ added in v0.3.0
func WithHostClient(ctx context.Context, client *HostServiceClient) context.Context
WithHostClient returns a new context with the given HostServiceClient attached.
Types ¶
type AuthHandlerGRPCClient ¶
type AuthHandlerGRPCClient struct {
// contains filtered or unexported fields
}
AuthHandlerGRPCClient is a minimal stub auth handler client.
func (*AuthHandlerGRPCClient) Client ¶
func (c *AuthHandlerGRPCClient) Client() proto.AuthHandlerServiceClient
Client returns the underlying AuthHandlerServiceClient for host-side wrapping.
type AuthHandlerGRPCPlugin ¶
type AuthHandlerGRPCPlugin struct {
goplugin.Plugin
Impl AuthHandlerPlugin
}
AuthHandlerGRPCPlugin implements plugin.GRPCPlugin for auth handler plugins.
func (*AuthHandlerGRPCPlugin) GRPCClient ¶
func (p *AuthHandlerGRPCPlugin) GRPCClient(_ context.Context, _ *goplugin.GRPCBroker, c *grpc.ClientConn) (any, error)
GRPCClient returns a minimal stub client for auth handler plugins.
func (*AuthHandlerGRPCPlugin) GRPCServer ¶
func (p *AuthHandlerGRPCPlugin) GRPCServer(broker *goplugin.GRPCBroker, s *grpc.Server) error
GRPCServer registers the auth handler gRPC server.
type AuthHandlerGRPCServer ¶
type AuthHandlerGRPCServer struct {
proto.UnimplementedAuthHandlerServiceServer
Impl AuthHandlerPlugin
// contains filtered or unexported fields
}
AuthHandlerGRPCServer implements the gRPC server for auth handler plugins.
func (*AuthHandlerGRPCServer) ActivateServerMode ¶ added in v0.13.0
func (s *AuthHandlerGRPCServer) ActivateServerMode(ctx context.Context, req *proto.ActivateServerModeRequest) (*proto.ActivateServerModeResponse, error)
func (*AuthHandlerGRPCServer) ConfigureAuthHandler ¶
func (s *AuthHandlerGRPCServer) ConfigureAuthHandler(ctx context.Context, req *proto.ConfigureAuthHandlerRequest) (*proto.ConfigureAuthHandlerResponse, error)
func (*AuthHandlerGRPCServer) DetectAvailableFlows ¶ added in v0.5.0
func (s *AuthHandlerGRPCServer) DetectAvailableFlows(ctx context.Context, req *proto.DetectAvailableFlowsRequest) (*proto.DetectAvailableFlowsResponse, error)
func (*AuthHandlerGRPCServer) GetAuthHandlers ¶
func (s *AuthHandlerGRPCServer) GetAuthHandlers(ctx context.Context, _ *proto.GetAuthHandlersRequest) (*proto.GetAuthHandlersResponse, error)
func (*AuthHandlerGRPCServer) GetStatus ¶
func (s *AuthHandlerGRPCServer) GetStatus(ctx context.Context, req *proto.GetStatusRequest) (*proto.GetStatusResponse, error)
func (*AuthHandlerGRPCServer) GetToken ¶
func (s *AuthHandlerGRPCServer) GetToken(ctx context.Context, req *proto.GetTokenRequest) (*proto.GetTokenResponse, error)
func (*AuthHandlerGRPCServer) ListCachedTokens ¶
func (s *AuthHandlerGRPCServer) ListCachedTokens(ctx context.Context, req *proto.ListCachedTokensRequest) (*proto.ListCachedTokensResponse, error)
func (*AuthHandlerGRPCServer) Login ¶
func (s *AuthHandlerGRPCServer) Login(req *proto.LoginRequest, stream grpc.ServerStreamingServer[proto.LoginStreamMessage]) error
func (*AuthHandlerGRPCServer) Logout ¶
func (s *AuthHandlerGRPCServer) Logout(ctx context.Context, req *proto.LogoutRequest) (*proto.LogoutResponse, error)
func (*AuthHandlerGRPCServer) PurgeExpiredTokens ¶
func (s *AuthHandlerGRPCServer) PurgeExpiredTokens(ctx context.Context, req *proto.PurgeExpiredTokensRequest) (*proto.PurgeExpiredTokensResponse, error)
func (*AuthHandlerGRPCServer) StopAuthHandler ¶
func (s *AuthHandlerGRPCServer) StopAuthHandler(ctx context.Context, req *proto.StopAuthHandlerRequest) (*proto.StopAuthHandlerResponse, error)
type AuthHandlerInfo ¶
type AuthHandlerInfo struct {
Name string `json:"name" yaml:"name"`
DisplayName string `json:"displayName" yaml:"displayName"`
Flows []auth.Flow `json:"flows" yaml:"flows"`
Capabilities []auth.Capability `json:"capabilities" yaml:"capabilities"`
}
AuthHandlerInfo holds static metadata about an auth handler exposed by a plugin.
type AuthHandlerPlugin ¶
type AuthHandlerPlugin interface {
GetAuthHandlers(ctx context.Context) ([]AuthHandlerInfo, error)
ConfigureAuthHandler(ctx context.Context, handlerName string, cfg ProviderConfig) error
Login(ctx context.Context, handlerName string, req LoginRequest, deviceCodeCb func(DeviceCodePrompt)) (*LoginResponse, error)
Logout(ctx context.Context, handlerName string, req LogoutRequest) error
GetStatus(ctx context.Context, handlerName string, req StatusRequest) (*auth.Status, error)
GetToken(ctx context.Context, handlerName string, req TokenRequest) (*TokenResponse, error)
// ListCachedTokens enumerates the handler's cached tokens. Handlers that
// advertise auth.CapInstanceHostname SHOULD return one entry per live
// instance, each with CachedTokenInfo.Hostname set to that instance.
ListCachedTokens(ctx context.Context, handlerName string) ([]*auth.CachedTokenInfo, error)
PurgeExpiredTokens(ctx context.Context, handlerName string) (int, error)
DetectAvailableFlows(ctx context.Context, handlerName string) ([]FlowAvailability, error)
StopAuthHandler(ctx context.Context, handlerName string) error
}
AuthHandlerPlugin is the interface that auth handler plugins must implement.
type DeviceCodePrompt ¶
type DeviceCodePrompt struct {
UserCode string `json:"userCode" yaml:"userCode"`
VerificationURI string `json:"verificationUri" yaml:"verificationUri"`
Message string `json:"message" yaml:"message"`
}
DeviceCodePrompt is sent over streaming Login to relay device-code info to the host.
type FlowAvailability ¶ added in v0.5.0
type FlowAvailability struct {
Flow auth.Flow `json:"flow" yaml:"flow"` // flow name (e.g., "device_code", "pat", "service_principal")
Available bool `json:"available" yaml:"available"` // true if environment credentials exist for this flow
Reason string `json:"reason" yaml:"reason"` // human-readable explanation (e.g., "GITHUB_TOKEN is set")
}
FlowAvailability reports whether a specific auth flow is available based on environment credentials or configuration.
type GRPCClient ¶
type GRPCClient struct {
// contains filtered or unexported fields
}
GRPCClient is a minimal stub provider plugin client.
func (*GRPCClient) Client ¶
func (c *GRPCClient) Client() proto.PluginServiceClient
Client returns the underlying PluginServiceClient for host-side wrapping.
type GRPCPlugin ¶
type GRPCPlugin struct {
goplugin.Plugin
Impl ProviderPlugin
}
GRPCPlugin implements plugin.GRPCPlugin from hashicorp/go-plugin.
func (*GRPCPlugin) GRPCClient ¶
func (p *GRPCPlugin) GRPCClient(_ context.Context, _ *goplugin.GRPCBroker, c *grpc.ClientConn) (any, error)
GRPCClient returns a minimal stub client. The host wraps this with its own extended GRPCClient that adds broker wiring and HostService startup.
func (*GRPCPlugin) GRPCServer ¶
func (p *GRPCPlugin) GRPCServer(broker *goplugin.GRPCBroker, s *grpc.Server) error
GRPCServer registers the gRPC server (plugin side).
type GRPCServer ¶
type GRPCServer struct {
proto.UnimplementedPluginServiceServer
Impl ProviderPlugin
// contains filtered or unexported fields
}
GRPCServer implements the gRPC server for the plugin.
func (*GRPCServer) ConfigureProvider ¶
func (s *GRPCServer) ConfigureProvider(ctx context.Context, req *proto.ConfigureProviderRequest) (*proto.ConfigureProviderResponse, error)
func (*GRPCServer) DescribeWhatIf ¶
func (s *GRPCServer) DescribeWhatIf(ctx context.Context, req *proto.DescribeWhatIfRequest) (*proto.DescribeWhatIfResponse, error)
func (*GRPCServer) ExecuteProvider ¶
func (s *GRPCServer) ExecuteProvider(ctx context.Context, req *proto.ExecuteProviderRequest) (*proto.ExecuteProviderResponse, error)
func (*GRPCServer) ExecuteProviderStream ¶
func (s *GRPCServer) ExecuteProviderStream(req *proto.ExecuteProviderRequest, stream proto.PluginService_ExecuteProviderStreamServer) error
func (*GRPCServer) ExtractDependencies ¶
func (s *GRPCServer) ExtractDependencies(ctx context.Context, req *proto.ExtractDependenciesRequest) (*proto.ExtractDependenciesResponse, error)
func (*GRPCServer) GetProviderDescriptor ¶
func (s *GRPCServer) GetProviderDescriptor(ctx context.Context, req *proto.GetProviderDescriptorRequest) (*proto.GetProviderDescriptorResponse, error)
func (*GRPCServer) GetProviders ¶
func (s *GRPCServer) GetProviders(ctx context.Context, _ *proto.GetProvidersRequest) (*proto.GetProvidersResponse, error)
func (*GRPCServer) StopProvider ¶
func (s *GRPCServer) StopProvider(ctx context.Context, req *proto.StopProviderRequest) (*proto.StopProviderResponse, error)
type HandshakeConfigData ¶
type HandshakeConfigData struct {
ProtocolVersion uint `json:"protocolVersion" yaml:"protocolVersion"`
MagicCookieKey string `json:"magicCookieKey" yaml:"magicCookieKey"`
MagicCookieValue string `json:"magicCookieValue" yaml:"magicCookieValue"`
}
HandshakeConfigData contains the handshake configuration.
func AuthHandlerHandshakeConfig ¶
func AuthHandlerHandshakeConfig() HandshakeConfigData
AuthHandlerHandshakeConfig returns the handshake configuration for auth handler plugin compatibility. Returns a copy to prevent mutation of shared state.
func HandshakeConfig ¶
func HandshakeConfig() HandshakeConfigData
HandshakeConfig returns the handshake configuration for provider plugin compatibility. Returns a copy to prevent mutation of shared state.
type HostServiceClient ¶
type HostServiceClient struct {
// contains filtered or unexported fields
}
HostServiceClient wraps the HostService gRPC client (used by plugins).
func HostClientFromContext ¶ added in v0.3.0
func HostClientFromContext(ctx context.Context) *HostServiceClient
HostClientFromContext retrieves the HostServiceClient from the context. Returns nil if no host client is available (e.g. the host did not start a HostService broker).
func NewHostServiceClient ¶
func NewHostServiceClient(conn *grpc.ClientConn) *HostServiceClient
NewHostServiceClient creates a HostServiceClient from a gRPC connection.
func (*HostServiceClient) DeleteSecret ¶
func (c *HostServiceClient) DeleteSecret(ctx context.Context, name string) error
DeleteSecret removes a secret from the host's secret store.
func (*HostServiceClient) GetAuthGroups ¶ added in v0.4.0
GetAuthGroups retrieves group memberships for the authenticated user from the host's auth registry. Handlers that implement group queries (e.g. Entra) may return memberships. If the selected handler does not support group queries, this method returns an empty slice and a nil error.
func (*HostServiceClient) GetAuthIdentity ¶
func (c *HostServiceClient) GetAuthIdentity(ctx context.Context, handler, scope string) (*proto.Claims, error)
GetAuthIdentity retrieves identity claims from the host's auth registry.
func (*HostServiceClient) GetAuthToken ¶
func (c *HostServiceClient) GetAuthToken(ctx context.Context, handler, scope string, minValidFor int64, forceRefresh bool) (*proto.GetAuthTokenResponse, error)
GetAuthToken retrieves a valid access token from the host's auth registry.
func (*HostServiceClient) ListAuthHandlers ¶
func (c *HostServiceClient) ListAuthHandlers(ctx context.Context) (handlers []string, defaultHandler string, err error)
ListAuthHandlers lists available auth handlers on the host.
func (*HostServiceClient) ListSecrets ¶
ListSecrets lists secret names from the host's secret store.
type LoginRequest ¶
type LoginRequest struct {
TenantID string `json:"tenantId,omitempty" yaml:"tenantId,omitempty"`
Scopes []string `json:"scopes,omitempty" yaml:"scopes,omitempty"`
Flow auth.Flow `json:"flow,omitempty" yaml:"flow,omitempty"`
Timeout time.Duration `json:"timeout,omitempty" yaml:"timeout,omitempty"`
// Hostname selects a specific instance (e.g. a cluster or server) for
// handlers that advertise auth.CapHostname.
Hostname string `json:"hostname,omitempty" yaml:"hostname,omitempty"`
// CallbackPort requests a specific loopback port for the OAuth callback
// server, for handlers that advertise auth.CapCallbackPort. A zero value
// preserves the handler's default (ephemeral or config-driven) behavior.
// When set, it is expected to be an unprivileged, in-range TCP port
// (1024-65535); the host is responsible for validating the value before
// sending it, and handlers should treat out-of-range values as unset.
CallbackPort int `json:"callbackPort,omitempty" yaml:"callbackPort,omitempty"`
}
LoginRequest contains parameters for a plugin Login call.
type LoginResponse ¶
type LoginResponse struct {
Claims *auth.Claims `json:"claims,omitempty" yaml:"claims,omitempty"`
ExpiresAt time.Time `json:"expiresAt,omitempty" yaml:"expiresAt,omitempty"`
}
LoginResponse contains the result of a plugin Login call.
type LoginStreamMessage ¶
type LoginStreamMessage struct {
DeviceCodePrompt *DeviceCodePrompt `json:"deviceCodePrompt,omitempty" yaml:"deviceCodePrompt,omitempty"`
Result *LoginResponse `json:"result,omitempty" yaml:"result,omitempty"`
Error string `json:"error,omitempty" yaml:"error,omitempty"`
}
LoginStreamMessage represents a message in the Login server-stream.
type LogoutRequest ¶ added in v0.15.0
type LogoutRequest struct {
// Hostname selects a specific instance (e.g. a cluster or server) for
// handlers that advertise auth.CapInstanceHostname.
Hostname string `json:"hostname,omitempty" yaml:"hostname,omitempty"`
}
LogoutRequest contains parameters for a plugin Logout call.
type ProviderConfig ¶
type ProviderConfig struct {
Quiet bool `json:"quiet" yaml:"quiet"`
NoColor bool `json:"noColor" yaml:"noColor"`
BinaryName string `json:"binaryName" yaml:"binaryName"`
HostServiceID uint32 `json:"hostServiceId,omitempty" yaml:"hostServiceId,omitempty"`
Profile string `json:"profile,omitempty" yaml:"profile,omitempty"`
Settings map[string]json.RawMessage `json:"settings,omitempty" yaml:"settings,omitempty"`
}
ProviderConfig holds host-side configuration sent to a provider once after plugin load via the ConfigureProvider RPC.
type ProviderPlugin ¶
type ProviderPlugin interface {
GetProviders(ctx context.Context) ([]string, error)
GetProviderDescriptor(ctx context.Context, providerName string) (*provider.Descriptor, error)
ConfigureProvider(ctx context.Context, providerName string, cfg ProviderConfig) error
ExecuteProvider(ctx context.Context, providerName string, input map[string]any) (*provider.Output, error)
ExecuteProviderStream(ctx context.Context, providerName string, input map[string]any, cb func(StreamChunk)) error
DescribeWhatIf(ctx context.Context, providerName string, input map[string]any) (string, error)
ExtractDependencies(ctx context.Context, providerName string, inputs map[string]any) ([]string, error)
StopProvider(ctx context.Context, providerName string) error
}
ProviderPlugin is the interface that plugins must implement.
type SecretRef ¶ added in v0.13.0
type SecretRef string
SecretRef is a string that references a secret value via a scheme prefix. Supported schemes:
- env://VAR_NAME — reads the value from environment variable VAR_NAME.
- file:///path — reads and trims the contents of the file at /path.
func (SecretRef) Resolve ¶ added in v0.13.0
Resolve reads the secret value from the referenced source. For env:// it reads the environment variable; for file:// it reads and trims the file.
type ServerMode ¶ added in v0.13.0
type ServerMode interface {
ActivateServerMode(ctx context.Context, settings json.RawMessage) error
}
ServerMode is an optional interface for auth handler plugins that support transitioning into a long-lived server/daemon mode for issuing tokens.
type StatusRequest ¶ added in v0.15.0
type StatusRequest struct {
// Hostname selects a specific instance (e.g. a cluster or server) for
// handlers that advertise auth.CapInstanceHostname.
Hostname string `json:"hostname,omitempty" yaml:"hostname,omitempty"`
}
StatusRequest contains parameters for a plugin GetStatus call.
type StreamChunk ¶
type StreamChunk struct {
Stdout []byte `json:"stdout,omitempty" yaml:"stdout,omitempty"`
Stderr []byte `json:"stderr,omitempty" yaml:"stderr,omitempty"`
Result *provider.Output `json:"result,omitempty" yaml:"result,omitempty"`
Error string `json:"error,omitempty" yaml:"error,omitempty"`
}
StreamChunk represents one chunk from a streaming provider execution.
type TokenRequest ¶
type TokenRequest struct {
Scope string `json:"scope,omitempty" yaml:"scope,omitempty"`
MinValidFor time.Duration `json:"minValidFor,omitempty" yaml:"minValidFor,omitempty"`
ForceRefresh bool `json:"forceRefresh,omitempty" yaml:"forceRefresh,omitempty"`
ServerContext auth.ServerContext `json:"serverContext,omitempty" yaml:"serverContext,omitempty"`
Caller auth.CallerType `json:"caller,omitempty" yaml:"caller,omitempty"`
Assertion string `json:"assertion,omitempty" yaml:"assertion,omitempty"`
// Hostname selects a specific instance (e.g. a cluster or server) for
// handlers that advertise auth.CapTokenHostname.
Hostname string `json:"hostname,omitempty" yaml:"hostname,omitempty"`
}
TokenRequest contains parameters for a plugin GetToken call.
type TokenResponse ¶
type TokenResponse struct {
AccessToken string `json:"accessToken" yaml:"accessToken"` //nolint:gosec
TokenType string `json:"tokenType" yaml:"tokenType"`
ExpiresAt time.Time `json:"expiresAt" yaml:"expiresAt"`
Scope string `json:"scope,omitempty" yaml:"scope,omitempty"`
CachedAt time.Time `json:"cachedAt,omitempty" yaml:"cachedAt,omitempty"`
Flow auth.Flow `json:"flow,omitempty" yaml:"flow,omitempty"`
SessionID string `json:"sessionId,omitempty" yaml:"sessionId,omitempty"`
}
TokenResponse contains the result of a plugin GetToken call.