auth

package
v0.16.95 Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2021 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HeaderHandler

func HeaderHandler(ac *Auth, next http.Handler) (handlerFunc, error)

func IsAuth

func IsAuth(ct context.Context) bool

func JwtHandler

func JwtHandler(ac *Auth, next http.Handler) (handlerFunc, error)

func MagicLinkHandler added in v0.16.80

func MagicLinkHandler(ac *Auth, next http.Handler) (handlerFunc, error)

func RailsCookieHandler

func RailsCookieHandler(ac *Auth, next http.Handler) (handlerFunc, error)

func RailsHandler

func RailsHandler(ac *Auth, next http.Handler) (handlerFunc, error)

func RailsMemcacheHandler

func RailsMemcacheHandler(ac *Auth, next http.Handler) (handlerFunc, error)

func RailsRedisHandler

func RailsRedisHandler(ac *Auth, next http.Handler) (handlerFunc, error)

func SimpleHandler

func SimpleHandler(ac *Auth, next http.Handler) (http.HandlerFunc, error)

func WithAuth

func WithAuth(next http.Handler, ac *Auth, log *zap.Logger) (http.Handler, error)

Types

type Auth

type Auth struct {
	// Name is a friendly name for this auth config
	Name string
	// Type can be magiclink, rails, jwt or header
	Type string

	// Cookie is the name of the cookie used
	Cookie string

	// In certain cases like Magiclink the jwt cookie
	// is generated by us this helps set the secure parameter
	// of this cookie
	CookieHTTPS bool `mapstructure:"cookie_https"`

	// In certain cases like Magiclink the jwt cookie
	// is generated by us this helps set the expiry parameter
	// of this cookie (ex. "20m", "2h")
	CookieExpiry string `mapstructure:"cookie_expiry"`

	// CredsInHeader is used in dev only to allow for credentials
	// in header values. Example: The X-User-ID HTTP header can be used to
	// set the user id.
	CredsInHeader bool `mapstructure:"creds_in_header"`

	// SubsCredsInVars is used in dev only to allow for credentials
	// in websocket variable. Example: The user_id websocket variable can be used to
	// set the user id.
	SubsCredsInVars bool `mapstructure:"subs_creds_in_vars"`

	// Rails cookie authentication
	Rails struct {
		// Rails version is needed to decode the cookie correctly.
		// Can be 5.2 or 6
		Version string

		// SecretKeyBase is the cookie encryption key used in your Rails config
		SecretKeyBase string `mapstructure:"secret_key_base"`

		// URL is used for Rails cookie store based auth.
		// Example: redis://redis-host:6379 or memcache://memcache-host
		URL string

		// Password is set if needed by Redis or Memcache
		Password string

		// MaxIdle maximum idle time for the connection
		MaxIdle int `mapstructure:"max_idle"`

		// MaxActive maximum active time for the connection
		MaxActive int `mapstructure:"max_active"`

		// Salt value is from your Rails 5.2 and below auth config
		Salt string

		// SignSalt value is from your Rails 5.2 and below auth config
		SignSalt string `mapstructure:"sign_salt"`

		// AuthSalt value is from your Rails 5.2 and below auth config
		AuthSalt string `mapstructure:"auth_salt"`
	}

	// JWT  authentication
	JWT JWTConfig

	// Header authentication
	Header struct {
		// Name of the HTTP header
		Name string

		// Value if set must match expected value (optional)
		Value string

		// Exists if set to true then the header must exist
		// this is an alternative to using value
		Exists bool
	}

	// Magic.link authentication
	MagicLink struct {
		Secret string
	}
}

Auth struct contains authentication related config values used by the GraphJin service

type JWTConfig added in v0.16.38

type JWTConfig = provider.JWTConfig

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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