auth

package
v0.0.47 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2024 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Google OAuth2 provider
	Google = "google"

	// Github OAuth2 provider
	Github = "github"

	// GitHubApp provider
	GitHubApp = "github-app"
)

Variables

View Source
var OAuthSuccessHtml []byte

OAuthSuccessHtml is the html page sent to the client upon successful enrollment via CLI

Functions

func DeleteAccessToken

func DeleteAccessToken(ctx context.Context, provider string, token string) error

DeleteAccessToken deletes the access token for a given provider

func GetUserClaimFromContext added in v0.0.35

func GetUserClaimFromContext[T any](ctx context.Context, claim string) (T, bool)

GetUserClaimFromContext returns the specified claim from the user subject in the context if found and of the correct type

func GetUserForGitHubId added in v0.0.39

func GetUserForGitHubId(ctx context.Context, sic server.IdentityConfigWrapper, ghUser int64) (string, error)

GetUserForGitHubId looks up a user in Keycloak by their GitHub ID. This is a temporary implementation until we have a proper interface in front of IDP implementations.

If the user is found, it returns their subject _in Keycloak_, suitable for use in the `sub` claim of a JWT, and in OpenFGA's user field. Note that this function may return a user of "" with no error if no users were found matching the GitHub ID.

func GetUserSubjectFromContext added in v0.0.24

func GetUserSubjectFromContext(ctx context.Context) string

GetUserSubjectFromContext returns the user subject from the context, or nil

func NewOAuthConfig

func NewOAuthConfig(provider string, cli bool) (*oauth2.Config, error)

NewOAuthConfig creates a new OAuth2 config for the given provider and whether the client is a CLI or web client

func NewProviderHttpClient

func NewProviderHttpClient(provider string) *http.Client

NewProviderHttpClient creates a new http client for the given provider

func RegisterOAuthFlags

func RegisterOAuthFlags(v *viper.Viper, flags *pflag.FlagSet) error

RegisterOAuthFlags registers client ID and secret file flags for all known providers. This is pretty tied into the internal of the auth module, so it lives here, but it would be nice if we have a consistent registration pattern (database flags are registered in the config module).

func ValidateProviderToken

func ValidateProviderToken(_ context.Context, provider string, token string) error

ValidateProviderToken validates the given token for the given provider

func WithAuthTokenContext added in v0.0.35

func WithAuthTokenContext(ctx context.Context, token openid.Token) context.Context

WithAuthTokenContext stores the specified user-identifying token in the context.

Types

type JwkSetJwtValidator

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

JwkSetJwtValidator is a JWT validator that uses a JWK set URL to validate the tokens

func (*JwkSetJwtValidator) ParseAndValidate

func (j *JwkSetJwtValidator) ParseAndValidate(tokenString string) (openid.Token, error)

ParseAndValidate validates a token string and returns an openID token, or an error if the token is invalid

type JwtValidator

type JwtValidator interface {
	ParseAndValidate(tokenString string) (openid.Token, error)
}

JwtValidator provides the functions to validate a JWT

func NewJwtValidator

func NewJwtValidator(ctx context.Context, jwksUrl string) (JwtValidator, error)

NewJwtValidator creates a new JWT validator that uses a JWK set URL to validate the tokens

type KeySetCache

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

KeySetCache is a KeySetFetcher that fetches the JWK set from a cache

func (*KeySetCache) GetKeySet

func (k *KeySetCache) GetKeySet() (jwk.Set, error)

GetKeySet returns the caches JWK set

type KeySetFetcher

type KeySetFetcher interface {
	GetKeySet() (jwk.Set, error)
}

KeySetFetcher provides the functions to fetch a JWK set

Directories

Path Synopsis
Package auth is a generated GoMock package.
Package auth is a generated GoMock package.
Package noop provides a no-op implementation of the JwtValidator interface
Package noop provides a no-op implementation of the JwtValidator interface

Jump to

Keyboard shortcuts

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