auth

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Oct 9, 2023 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProviderGitHub = "github"
	ProviderOIDC   = "oidc"
)

Variables

This section is empty.

Functions

func GenerateProviders

func GenerateProviders(
	ctx context.Context,
	config Config,
	redirectURL string,
) (pp map[string]Provider, err error)

func GetClaimsFromRequest

func GetClaimsFromRequest(r *http.Request) (claims *jwt.Claims, ok bool)

Types

type Auth

type Auth struct {
	JWT       jwt.Service
	Providers map[string]Provider
}

func (*Auth) CallBack

func (a *Auth) CallBack() http.HandlerFunc

CallBack is the handler called after login.

It:

1. Fetches the accessToken 2. Fetches some user info and wrap them in a JWT token 3. Store the JWT token in a cookie for the browser.

func (*Auth) Login

func (a *Auth) Login() http.HandlerFunc

Login is the handler that redirect to the authentication page of the OAuth Provider.

func (*Auth) Logout

func (a *Auth) Logout() http.HandlerFunc

func (*Auth) Middleware

func (a *Auth) Middleware(next http.Handler) http.Handler

type Config

type Config struct {
	Providers []ProviderConfig `yaml:"providers"`
}

type GitHubProvider added in v1.3.0

type GitHubProvider struct {
	Name string
	*oauth2.Config
}

func (*GitHubProvider) AuthCodeURL added in v1.3.0

func (p *GitHubProvider) AuthCodeURL(state string, opts ...oauth2.AuthCodeOption) string

func (*GitHubProvider) DisplayName added in v1.3.0

func (p *GitHubProvider) DisplayName() string

func (*GitHubProvider) Exchange added in v1.3.0

func (p *GitHubProvider) Exchange(
	ctx context.Context,
	code string,
	opts ...oauth2.AuthCodeOption,
) (*oauth2.Token, error)

func (*GitHubProvider) GetIdentity added in v1.3.0

func (p *GitHubProvider) GetIdentity(
	ctx context.Context,
	token *oauth2.Token,
) (userID string, userName string, err error)

type OIDCClaims

type OIDCClaims struct {
	jwt.RegisteredClaims
	Name  string `json:"name"`
	Email string `json:"email"`
}

type OIDCProvider added in v1.3.0

type OIDCProvider struct {
	Name string
	*oauth2.Config

	*oidc.Provider
}

func (*OIDCProvider) AuthCodeURL added in v1.3.0

func (p *OIDCProvider) AuthCodeURL(state string, opts ...oauth2.AuthCodeOption) string

func (*OIDCProvider) DisplayName added in v1.3.0

func (p *OIDCProvider) DisplayName() string

func (*OIDCProvider) Exchange added in v1.3.0

func (p *OIDCProvider) Exchange(
	ctx context.Context,
	code string,
	opts ...oauth2.AuthCodeOption,
) (*oauth2.Token, error)

func (*OIDCProvider) GetIdentity added in v1.3.0

func (p *OIDCProvider) GetIdentity(
	ctx context.Context,
	token *oauth2.Token,
) (userID string, userName string, err error)

type Provider

type Provider interface {
	AuthCodeURL(state string, opts ...oauth2.AuthCodeOption) string
	Exchange(ctx context.Context, code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)

	DisplayName() string
	GetIdentity(
		ctx context.Context,
		token *oauth2.Token,
	) (userID string, userName string, err error)
}

type ProviderConfig

type ProviderConfig struct {
	Type         ProviderType `yaml:"type"`
	Name         string       `yaml:"name"`
	ClientID     string       `yaml:"clientID"`
	ClientSecret string       `yaml:"clientSecret"`
	Endpoint     string       `yaml:"endpoint"`
}

type ProviderType

type ProviderType string

Jump to

Keyboard shortcuts

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