auth

package
v0.0.0-...-c1e532c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2024 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultFailureHandler = http.HandlerFunc(failureHandler)

DefaultFailureHandler responds with the status code and message based on the error extracted from the context.

Functions

func WithError

func WithError(ctx context.Context, err *Error) context.Context

WithError returns a new context with the given error.

func WithUserInfo

func WithUserInfo(ctx context.Context, userInfo *UserInfo) context.Context

WithUserInfo returns a new context with the given user info.

Types

type Config

type Config struct {
	// Issuer is the SAMS instance URL, e.g. "https://accounts.sourcegraph.com".
	Issuer string
	// ClientID is the SAMS client ID, e.g. "sams_cid_xxx".
	ClientID string
	// ClientSecret is the SAMS client secret, e.g. "sams_cs_xxx".
	ClientSecret string
	// RequestScopes is the list of requested scopes for access tokens that are
	// issued to this client.
	RequestScopes []scopes.Scope
	// RedirectURI is the URL to redirect to after the user has authenticated. It
	// MUST exact-match one of the pre-registered redirect URIs on SAMS.
	RedirectURI string

	// FailureHandler is the HTTP handler to call when an error occurs. Use
	// ErrorFromContext to extract the error.
	FailureHandler http.Handler

	SecretStore
}

Config contains the configuration for the SAMS authentication handler.

type Error

type Error struct {
	// StatusCode is the HTTP status code to respond with.
	StatusCode int
	// Cause is the error that caused the failure.
	Cause error
}

Error is an error that occurred during the authentication process.

func ErrorFromContext

func ErrorFromContext(ctx context.Context) *Error

ErrorFromContext returns the error from the given context.

type Handler

type Handler struct {
	// contains filtered or unexported fields
}

Handler is the SAMS authentication handler.

func NewHandler

func NewHandler(config Config) (*Handler, error)

NewHandler returns a new SAMS authentication handler with the given configuration.

func (*Handler) CallbackHandler

func (h *Handler) CallbackHandler(success http.Handler) http.Handler

CallbackHandler returns an HTTP handler that handles the SAMS callback and calls the success handler upon successful authentication. Use UserInfoFromContext to extract the user information.

func (*Handler) LoginHandler

func (h *Handler) LoginHandler() http.Handler

LoginHandler returns an HTTP handler that redirects the user to the SAMS authentication page.

It passes through the "prompt" and "prompt_auth" query parameters to SAMS.

type SecretStore

type SecretStore interface {
	// SetState sets the randomly-generated state to the per-user session.
	SetState(r *http.Request, state string) error
	// GetState returns the state from the per-user session.
	GetState(r *http.Request) (string, error)
	// DeleteState deletes the state from the per-user session.
	DeleteState(r *http.Request)
	// SetNonce sets the randomly-generated nonce to the per-user session.
	SetNonce(r *http.Request, nonce string) error
	// GetNonce returns the nonce from the per-user session.
	GetNonce(r *http.Request) (string, error)
	// DeleteNonce deletes the nonce from the per-user session.
	DeleteNonce(r *http.Request)
}

SecretStore is the interface for managing the authentication state and nonce in the per-user session.

type UserInfo

type UserInfo struct {
	// ID is the unique identifier of the user.
	ID string `json:"sub"`
	// Name is the display name of the user.
	Name string `json:"name"`
	// Email is the email address of the user.
	Email string `json:"email"`
	// EmailVerified is true if the email address has been verified.
	EmailVerified bool `json:"email_verified"`
	// AvatarURL is the URL to the user's avatar.
	AvatarURL string `json:"picture"`
	// CreatedAt is the time when the user account was created.
	CreatedAt time.Time `json:"created_at"`

	// Token is the OAuth2 access token.
	Token *oauth2.Token `json:"-"`
	// IDToken is the OpenID Connect ID token.
	IDToken *oidc.IDToken `json:"-"`
}

UserInfo contains the information about the authenticated user.

func UserInfoFromContext

func UserInfoFromContext(ctx context.Context) *UserInfo

UserInfoFromContext returns the user info from the given context.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL