Documentation
¶
Index ¶
- Variables
- func New(keyOpt jws.SigningKeyOption, header *jose.Header, claimsSet *ClaimsSet) (token string, err error)
- func Sign(keyOpt jws.SigningKeyOption, header *jose.Header, claimsSet *ClaimsSet) (signingInput, signatureEncoded string, err error)
- type Audience
- type ClaimsSet
- func (c *ClaimsSet) Decode(encoded string) error
- func (c *ClaimsSet) Encode() (encoded string, err error)
- func (c *ClaimsSet) GetPrivateClaim(claimName string, v any) error
- func (c *ClaimsSet) MarshalJSON() (data []byte, err error)
- func (c *ClaimsSet) SetPrivateClaim(claimName string, v any)
- func (c *ClaimsSet) UnmarshalJSON(data []byte) (err error)
- type ClaimsSetOption
- func WithAudience(aud ...string) ClaimsSetOption
- func WithExpirationTime(exp time.Time) ClaimsSetOption
- func WithIssuedAt(iat time.Time) ClaimsSetOption
- func WithIssuer(iss string) ClaimsSetOption
- func WithJWTID(jti string) ClaimsSetOption
- func WithNotBefore(nbf time.Time) ClaimsSetOption
- func WithPrivateClaim(name string, value any) ClaimsSetOption
- func WithSubject(sub string) ClaimsSetOption
- type PrivateClaims
- type VerifyOption
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrPrivateClaimIsNotFound = errors.New(`jwt: private claim is not found`) ErrVIsNotPointerOrInterface = errors.New(`jwt: v is not pointer or interface`) ErrPrivateClaimTypeIsNotMatch = errors.New(`jwt: private claim type is not match`) ErrAudienceIsNil = errors.New(`jwt: aud is nil`) ErrUnsupportedType = errors.New(`jwt: unsupported type`) )
View Source
var ( ErrTokenIsExpired = errors.New("jwt: token is expired") ErrTokenIsNotBefore = errors.New("jwt: token is not before") ErrAudienceIsNotMatch = errors.New("jwt: audience is not match") ErrIssuerIsNotMatch = errors.New("jwt: issuer is not match") )
View Source
var ErrInvalidJSON = errors.New("jwt: invalid JSON")
Functions ¶
func New ¶
func New(keyOpt jws.SigningKeyOption, header *jose.Header, claimsSet *ClaimsSet) (token string, err error)
New
Example:
token, err := jwt.New(
jws.WithHMACKey([]byte("YOUR_HMAC_KEY"),
jose.NewHeader(jwa.HS256, jose.WithType("JWT")),
jwt.NewClaimsSet(jwt.WithSubject("userID"), jwt.WithExpirationTime(time.Now().Add(1*time.Hour))),
)
func Sign ¶
func Sign(keyOpt jws.SigningKeyOption, header *jose.Header, claimsSet *ClaimsSet) (signingInput, signatureEncoded string, err error)
Sign
Example:
signingInput, signatureEncoded, err := jwt.Sign(
jws.WithHMACKey([]byte("YOUR_HMAC_KEY"),
jose.NewHeader(jwa.HS256, jose.WithType("JWT")),
jwt.NewClaimsSet(jwt.WithSubject("userID"), jwt.WithExpirationTime(time.Now().Add(1*time.Hour))),
)
Types ¶
type ClaimsSet ¶
type ClaimsSet struct {
// Issuer
//
// - ref. https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1
Issuer string `json:"iss,omitempty"`
// Subject
//
// The "sub" (subject) claim identifies the principal that is the
// subject of the JWT. The claims in a JWT are normally statements
// about the subject. The subject value MUST either be scoped to be
// locally unique in the context of the issuer or be globally unique.
// The processing of this claim is generally application specific. The
// "sub" value is a case-sensitive string containing a StringOrURI
// value. Use of this claim is OPTIONAL.
//
// - ref. https://www.rfc-editor.org/rfc/rfc7519#section-4.1.2
Subject string `json:"sub,omitempty"`
// Audience
//
// The "aud" (audience) claim identifies the recipients that the JWT is
// intended for. Each principal intended to process the JWT MUST
// identify itself with a value in the audience claim. If the principal
// processing the claim does not identify itself with a value in the
// "aud" claim when this claim is present, then the JWT MUST be
// rejected. In the general case, the "aud" value is an array of case-
// sensitive strings, each containing a StringOrURI value. In the
// special case when the JWT has one audience, the "aud" value MAY be a
// single case-sensitive string containing a StringOrURI value. The
// interpretation of audience values is generally application specific.
// Use of this claim is OPTIONAL.
//
// - ref. https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3
Audience Audience `json:"aud,omitempty"`
// ExpirationTime
//
// The "exp" (expiration time) claim identifies the expiration time on
// or after which the JWT MUST NOT be accepted for processing. The
// processing of the "exp" claim requires that the current date/time
// MUST be before the expiration date/time listed in the "exp" claim.
// Implementers MAY provide for some small leeway, usually no more than
// a few minutes, to account for clock skew. Its value MUST be a number
// containing a NumericDate value. Use of this claim is OPTIONAL.
//
// - ref. https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4
ExpirationTime int64 `json:"exp,omitempty"`
// NotBefore
//
// The "nbf" (not before) claim identifies the time before which the JWT
// MUST NOT be accepted for processing. The processing of the "nbf"
// claim requires that the current date/time MUST be after or equal to
// the not-before date/time listed in the "nbf" claim. Implementers MAY
// provide for some small leeway, usually no more than a few minutes, to
// account for clock skew. Its value MUST be a number containing a
// NumericDate value. Use of this claim is OPTIONAL.
//
// - ref. https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5
NotBefore int64 `json:"nbf,omitempty"`
// IssuedAt
//
// - ref. https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6
IssuedAt int64 `json:"iat,omitempty"`
// JWTID
//
// - ref. https://www.rfc-editor.org/rfc/rfc7519#section-4.1.7
JWTID string `json:"jti,omitempty"`
// PrivateClaims
//
// - ref. https://www.rfc-editor.org/rfc/rfc7519#section-4.3
PrivateClaims PrivateClaims `json:"-"`
}
ClaimsSet
- ref. JWT Claims - JSON Web Token (JWT) https://www.rfc-editor.org/rfc/rfc7519#section-4
func NewClaimsSet ¶
func NewClaimsSet(claims ...ClaimsSetOption) *ClaimsSet
NewClaimsSet
Example:
claimsSet := jwt.NewClaimsSet(
jwt.WithSubject("userID"),
jwt.WithExpirationTime(time.Now().Add(1*time.Hour)),
)
func Verify ¶
func Verify(keyOption jws.VerificationKeyOption, jwt string, opts ...VerifyOption) (header *jose.Header, claimsSet *ClaimsSet, err error)
Verify
Example:
header, claimsSet, err := jwt.Verify(
jws.UseHMACKey([]byte("YOUR_HMAC_KEY"),
token,
)
func (*ClaimsSet) GetPrivateClaim ¶
GetPrivateClaim
func (*ClaimsSet) MarshalJSON ¶
func (*ClaimsSet) SetPrivateClaim ¶
func (*ClaimsSet) UnmarshalJSON ¶
type ClaimsSetOption ¶
type ClaimsSetOption func(c *ClaimsSet)
func WithAudience ¶
func WithAudience(aud ...string) ClaimsSetOption
func WithExpirationTime ¶
func WithExpirationTime(exp time.Time) ClaimsSetOption
func WithIssuedAt ¶
func WithIssuedAt(iat time.Time) ClaimsSetOption
func WithIssuer ¶
func WithIssuer(iss string) ClaimsSetOption
func WithJWTID ¶
func WithJWTID(jti string) ClaimsSetOption
func WithNotBefore ¶
func WithNotBefore(nbf time.Time) ClaimsSetOption
func WithPrivateClaim ¶
func WithPrivateClaim(name string, value any) ClaimsSetOption
func WithSubject ¶
func WithSubject(sub string) ClaimsSetOption
type PrivateClaims ¶
type VerifyOption ¶
type VerifyOption func(*verifyOption)
func VerifyAudience ¶
func VerifyAudience(aud ...string) VerifyOption
func VerifyIssuer ¶
func VerifyIssuer(iss string) VerifyOption
func VerifyPrivateClaims ¶
func VerifyPrivateClaims(verifyPrivateClaimsFunc func(privateClaims PrivateClaims) error) VerifyOption
Click to show internal directories.
Click to hide internal directories.