Documentation
¶
Index ¶
Constants ¶
const ( // RefreshLeeway is how long before a token's expiry a Session refreshes it. // Refreshing ahead of time avoids races where a request is made with a token // that expires while it is in flight. RefreshLeeway = 30 * time.Second )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthenticateArgs ¶
type AuthenticateArgs struct {
Ctx map[interface{}]interface{}
ClientID string
ClientSecret string
}
AuthenticateArgs for RPC
type AuthenticateReply ¶
AuthenticateReply for RPC
type Authenticator ¶ added in v2.51.0
Authenticator produces an authenticated context together with the time at which its token expires. A Session calls it once up front and then again shortly before each expiry to keep the context fresh.
type CredentialStrategy ¶
type CredentialStrategy interface {
GetCredentials(w http.ResponseWriter, r *http.Request) (*Credentials, error)
AddWWWAuthenticate(w http.ResponseWriter, r *http.Request, realm string)
}
CredentialStrategy obtains Credentials from the request.
type Credentials ¶
Credentials contains the auth type, client id and secret.
type Manager ¶
type Manager interface {
plugin.Plugin
Authenticate(ctx context.Context, clientID, clientSecret string) (*user.User, map[string]*authpb.Scope, error)
}
Manager is the interface to implement to authenticate users
type ProviderPlugin ¶
type ProviderPlugin struct {
Impl Manager
}
ProviderPlugin is the implementation of plugin.Plugin so we can serve/consume this.
type RPCClient ¶
RPCClient is an implementation of Manager that talks over RPC.
type RPCServer ¶
type RPCServer struct {
// This is the real implementation
Impl Manager
}
RPCServer is the server that RPCClient talks to, conforming to the requirements of net/rpc
func (*RPCServer) Authenticate ¶
func (m *RPCServer) Authenticate(args AuthenticateArgs, resp *AuthenticateReply) error
Authenticate RPCServer Authenticate method
func (*RPCServer) Configure ¶
func (m *RPCServer) Configure(args ConfigureArg, resp *ConfigureReply) error
Configure RPCServer Configure method
type Registry ¶
type Registry interface {
ListProviders(ctx context.Context) ([]*registry.ProviderInfo, error)
GetProvider(ctx context.Context, authType string) (*registry.ProviderInfo, error)
}
Registry is the interface that auth registries implement for discovering auth providers
type Session ¶ added in v2.51.0
type Session struct {
// contains filtered or unexported fields
}
Session keeps an authenticated context valid for the whole duration of a long-running task.
Many operations (indexing a space, creating an archive, bulk migrations, …) can outlive the lifetime of a single authentication token. Passing a static context to such a task means its token expires halfway through and every subsequent call fails. Session solves this by owning the context: it authenticates once up front via an Authenticator and then refreshes the context in the background shortly before the token expires. Callers always read the current context through Ctx, so they transparently pick up refreshed tokens without having to thread a new context around. A Session is safe for concurrent use.
func NewSession ¶ added in v2.51.0
func NewSession(parent context.Context, auth Authenticator) (*Session, error)
NewSession authenticates once via auth and then refreshes the context in the background shortly before the token expires. It returns an error if the initial authentication fails.
func NewStaticSession ¶ added in v2.51.0
NewStaticSession returns a Session that always returns ctx and never refreshes. It is useful for callers that manage their own (typically short-lived) context but need to satisfy a Session-based API.
type TokenStrategy ¶
TokenStrategy obtains a token from the request. If token does not exist returns an empty string.
type TokenWriter ¶
type TokenWriter interface {
WriteToken(token string, w http.ResponseWriter)
}
TokenWriter stores the token in a http response.
Directories
¶
| Path | Synopsis |
|---|---|
|
manager
|
|
|
guestlinks
Package guestlinks implements a Reva auth.Manager that authenticates OpenCloud guest-link sessions.
|
Package guestlinks implements a Reva auth.Manager that authenticates OpenCloud guest-link sessions. |
|
oidc
Package oidc verifies an OIDC token against the configured OIDC provider and obtains the necessary claims to obtain user information.
|
Package oidc verifies an OIDC token against the configured OIDC provider and obtains the necessary claims to obtain user information. |