dex/connector/interface.go

74 lines
2.3 KiB
Go
Raw Normal View History

2015-08-18 05:57:27 +05:30
package connector
import (
"errors"
2015-08-18 05:57:27 +05:30
"html/template"
"net/http"
"net/url"
"github.com/coreos/dex/repo"
2015-08-18 05:57:27 +05:30
"github.com/coreos/go-oidc/oidc"
"github.com/coreos/pkg/health"
)
var ErrorNotFound = errors.New("connector not found in repository")
2015-08-18 05:57:27 +05:30
type Connector interface {
// ID returns the ID of the ConnectorConfig used to create the Connector.
2015-08-18 05:57:27 +05:30
ID() string
// LoginURL returns the backend's authorization URL for a sessionKey
// and OAuth2 prompt type.
2015-08-18 05:57:27 +05:30
LoginURL(sessionKey, prompt string) (string, error)
// Handler allows connectors to register a callback handler with the
// dex server.
//
// Connectors will handle any path that extends the namespace URL provided
// when the Connector is instantiated.
Handler(errorURL url.URL) http.Handler
2015-08-18 05:57:27 +05:30
// Sync triggers any long-running tasks needed to maintain the
// Connector's operation. For example, this would encompass
// repeatedly caching any remote resources for local use.
Sync() chan struct{}
// TrustedEmailProvider indicates whether or not we can trust that email
// claims coming from this provider.
2015-08-18 05:57:27 +05:30
TrustedEmailProvider() bool
health.Checkable
}
//go:generate genconfig -o config.go connector Connector
type ConnectorConfig interface {
// ConnectorID returns a unique end user facing identifier. For example "google".
2015-08-18 05:57:27 +05:30
ConnectorID() string
// ConnectorType returns an implementation specific identifier. For example "oidc".
2015-08-18 05:57:27 +05:30
ConnectorType() string
// Connector is invoked by the dex server and returns a Connector configured
// to use the provided arguments. URL namespace is used to register callbacks.
// loginFunc is used to associate remote identies with dex session keys.
//
// The returned Connector must call loginFunc once upon successful
// identification of a user.
//
// Additional templates are passed for connectors that require rendering HTML
// pages, such as the "local" connector.
2015-08-18 05:57:27 +05:30
Connector(ns url.URL, loginFunc oidc.LoginFunc, tpls *template.Template) (Connector, error)
}
// GroupsConnector is a strategy for mapping a user to a set of groups. This is optionally
// implemented by some connectors.
type GroupsConnector interface {
Groups(fullUserID string) ([]string, error)
}
2015-08-18 05:57:27 +05:30
type ConnectorConfigRepo interface {
All() ([]ConnectorConfig, error)
GetConnectorByID(repo.Transaction, string) (ConnectorConfig, error)
Set(cfgs []ConnectorConfig) error
2015-08-18 05:57:27 +05:30
}