jwt

package
v0.39.0-nucleate-test Latest Latest
Warning

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

Go to latest
Published: May 28, 2021 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Copy

func Copy(elements map[string]interface{}) (result map[string]interface{})

Copy will copy all elements in a map and return a new representational map

func Filter

func Filter(elements map[string]interface{}, keys ...string) map[string]interface{}

Filter will filter out elements based on keys in a given input map na key-slice

func ToString

func ToString(i interface{}) string

ToString will return a string representation of a map

func ToTime

func ToTime(i interface{}) time.Time

ToTime will try to convert a given input to a time.Time structure

Types

type ES256JWTStrategy

type ES256JWTStrategy struct {
	PrivateKey *ecdsa.PrivateKey
}

ES256JWTStrategy is responsible for generating and validating JWT challenges

func (*ES256JWTStrategy) Decode

func (j *ES256JWTStrategy) Decode(ctx context.Context, token string) (*jwt.Token, error)

Decode will decode a JWT token

func (*ES256JWTStrategy) Generate

func (j *ES256JWTStrategy) Generate(ctx context.Context, claims jwt.Claims, header Mapper) (string, string, error)

Generate generates a new authorize code or returns an error. set secret

func (*ES256JWTStrategy) GetSignature

func (j *ES256JWTStrategy) GetSignature(ctx context.Context, token string) (string, error)

GetSignature will return the signature of a token

func (*ES256JWTStrategy) GetSigningMethodLength

func (j *ES256JWTStrategy) GetSigningMethodLength() int

GetSigningMethodLength will return the length of the signing method

func (*ES256JWTStrategy) Hash

func (j *ES256JWTStrategy) Hash(ctx context.Context, in []byte) ([]byte, error)

Hash will return a given hash based on the byte input or an error upon fail

func (*ES256JWTStrategy) Validate

func (j *ES256JWTStrategy) Validate(ctx context.Context, token string) (string, error)

Validate validates a token and returns its signature or an error if the token is not valid.

type Headers

type Headers struct {
	Extra map[string]interface{}
}

Headers is the jwt headers

func NewHeaders

func NewHeaders() *Headers

func (*Headers) Add

func (h *Headers) Add(key string, value interface{})

Add will add a key-value pair to the extra field

func (*Headers) Get

func (h *Headers) Get(key string) interface{}

Get will get a value from the extra field based on a given key

func (*Headers) ToMap

func (h *Headers) ToMap() map[string]interface{}

ToMap will transform the headers to a map structure

func (Headers) ToMapClaims

func (h Headers) ToMapClaims() jwt.MapClaims

ToMapClaims will return a jwt-go MapClaims representation

type IDTokenClaims

type IDTokenClaims struct {
	JTI                                 string
	Issuer                              string
	Subject                             string
	Audience                            []string
	Nonce                               string
	ExpiresAt                           time.Time
	IssuedAt                            time.Time
	RequestedAt                         time.Time
	AuthTime                            time.Time
	AccessTokenHash                     string
	AuthenticationContextClassReference string
	AuthenticationMethodsReference      string
	CodeHash                            string
	Extra                               map[string]interface{}
}

IDTokenClaims represent the claims used in open id connect requests

func (*IDTokenClaims) Add

func (c *IDTokenClaims) Add(key string, value interface{})

Add will add a key-value pair to the extra field

func (*IDTokenClaims) Get

func (c *IDTokenClaims) Get(key string) interface{}

Get will get a value from the extra field based on a given key

func (*IDTokenClaims) ToMap

func (c *IDTokenClaims) ToMap() map[string]interface{}

ToMap will transform the headers to a map structure

func (IDTokenClaims) ToMapClaims

func (c IDTokenClaims) ToMapClaims() jwt.MapClaims

ToMapClaims will return a jwt-go MapClaims representation

type JWTClaims

type JWTClaims struct {
	Subject    string
	Issuer     string
	Audience   []string
	JTI        string
	IssuedAt   time.Time
	NotBefore  time.Time
	ExpiresAt  time.Time
	Scope      []string
	Extra      map[string]interface{}
	ScopeField JWTScopeFieldEnum
}

JWTClaims represent a token's claims.

func (*JWTClaims) Add

func (c *JWTClaims) Add(key string, value interface{})

Add will add a key-value pair to the extra field

func (*JWTClaims) FromMap

func (c *JWTClaims) FromMap(m map[string]interface{})

FromMap will set the claims based on a mapping

func (*JWTClaims) FromMapClaims

func (c *JWTClaims) FromMapClaims(mc jwt.MapClaims)

FromMapClaims will populate claims from a jwt-go MapClaims representation

func (JWTClaims) Get

func (c JWTClaims) Get(key string) interface{}

Get will get a value from the extra field based on a given key

func (*JWTClaims) ToMap

func (c *JWTClaims) ToMap() map[string]interface{}

ToMap will transform the headers to a map structure

func (JWTClaims) ToMapClaims

func (c JWTClaims) ToMapClaims() jwt.MapClaims

ToMapClaims will return a jwt-go MapClaims representation

func (*JWTClaims) With

func (c *JWTClaims) With(expiry time.Time, scope, audience []string) JWTClaimsContainer

func (*JWTClaims) WithDefaults

func (c *JWTClaims) WithDefaults(iat time.Time, issuer string) JWTClaimsContainer

func (*JWTClaims) WithScopeField

func (c *JWTClaims) WithScopeField(scopeField JWTScopeFieldEnum) JWTClaimsContainer

type JWTClaimsContainer

type JWTClaimsContainer interface {
	// With returns a copy of itself with expiresAt, scope, audience set to the given values.
	With(expiry time.Time, scope, audience []string) JWTClaimsContainer

	// WithDefaults returns a copy of itself with issuedAt and issuer set to the given default values. If those
	// values are already set in the claims, they will not be updated.
	WithDefaults(iat time.Time, issuer string) JWTClaimsContainer

	// WithScopeField configures how a scope field should be represented in JWT.
	WithScopeField(scopeField JWTScopeFieldEnum) JWTClaimsContainer

	// ToMapClaims returns the claims as a github.com/dgrijalva/jwt-go.MapClaims type.
	ToMapClaims() jwt.MapClaims
}

type JWTClaimsDefaults

type JWTClaimsDefaults struct {
	ExpiresAt time.Time
	IssuedAt  time.Time
	Issuer    string
	Scope     []string
}

type JWTScopeFieldEnum

type JWTScopeFieldEnum int

Enum for different types of scope encoding.

const (
	JWTScopeFieldUnset JWTScopeFieldEnum = iota
	JWTScopeFieldList
	JWTScopeFieldString
	JWTScopeFieldBoth
)

type JWTStrategy

type JWTStrategy interface {
	Generate(ctx context.Context, claims jwt.Claims, header Mapper) (string, string, error)
	Validate(ctx context.Context, token string) (string, error)
	Hash(ctx context.Context, in []byte) ([]byte, error)
	Decode(ctx context.Context, token string) (*jwt.Token, error)
	GetSignature(ctx context.Context, token string) (string, error)
	GetSigningMethodLength() int
}

type Mapper

type Mapper interface {
	ToMap() map[string]interface{}
	Add(key string, value interface{})
	Get(key string) interface{}
}

Mapper is the interface used internally to map key-value pairs

type RS256JWTStrategy

type RS256JWTStrategy struct {
	PrivateKey *rsa.PrivateKey
}

RS256JWTStrategy is responsible for generating and validating JWT challenges

func (*RS256JWTStrategy) Decode

func (j *RS256JWTStrategy) Decode(ctx context.Context, token string) (*jwt.Token, error)

Decode will decode a JWT token

func (*RS256JWTStrategy) Generate

func (j *RS256JWTStrategy) Generate(ctx context.Context, claims jwt.Claims, header Mapper) (string, string, error)

Generate generates a new authorize code or returns an error. set secret

func (*RS256JWTStrategy) GetSignature

func (j *RS256JWTStrategy) GetSignature(ctx context.Context, token string) (string, error)

GetSignature will return the signature of a token

func (*RS256JWTStrategy) GetSigningMethodLength

func (j *RS256JWTStrategy) GetSigningMethodLength() int

GetSigningMethodLength will return the length of the signing method

func (*RS256JWTStrategy) Hash

func (j *RS256JWTStrategy) Hash(ctx context.Context, in []byte) ([]byte, error)

Hash will return a given hash based on the byte input or an error upon fail

func (*RS256JWTStrategy) Validate

func (j *RS256JWTStrategy) Validate(ctx context.Context, token string) (string, error)

Validate validates a token and returns its signature or an error if the token is not valid.

Jump to

Keyboard shortcuts

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