forked from mirror/jwt
73 lines
2.6 KiB
Go
73 lines
2.6 KiB
Go
package jwt
|
|
|
|
// Claims represent any form of a JWT Claims Set according to
|
|
// https://datatracker.ietf.org/doc/html/rfc7519#section-4. In order to have a
|
|
// common basis for validation, it is required that an implementation is able to
|
|
// supply at least the claim names provided in
|
|
// https://datatracker.ietf.org/doc/html/rfc7519#section-4.1 namely `exp`,
|
|
// `iat`, `nbf`, `iss` and `aud`.
|
|
type Claims interface {
|
|
GetExpiryAt() *NumericDate
|
|
GetIssuedAt() *NumericDate
|
|
GetNotBefore() *NumericDate
|
|
GetIssuer() string
|
|
GetAudience() ClaimStrings
|
|
}
|
|
|
|
// RegisteredClaims are a structured version of the JWT Claims Set,
|
|
// restricted to Registered Claim Names, as referenced at
|
|
// https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
|
|
//
|
|
// This type can be used on its own, but then additional private and
|
|
// public claims embedded in the JWT will not be parsed. The typical use-case
|
|
// therefore is to embedded this in a user-defined claim type.
|
|
//
|
|
// See examples for how to use this with your own claim types.
|
|
type RegisteredClaims struct {
|
|
// the `iss` (Issuer) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.1
|
|
Issuer string `json:"iss,omitempty"`
|
|
|
|
// the `sub` (Subject) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.2
|
|
Subject string `json:"sub,omitempty"`
|
|
|
|
// the `aud` (Audience) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3
|
|
Audience ClaimStrings `json:"aud,omitempty"`
|
|
|
|
// the `exp` (Expiration Time) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.4
|
|
ExpiresAt *NumericDate `json:"exp,omitempty"`
|
|
|
|
// the `nbf` (Not Before) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.5
|
|
NotBefore *NumericDate `json:"nbf,omitempty"`
|
|
|
|
// the `iat` (Issued At) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.6
|
|
IssuedAt *NumericDate `json:"iat,omitempty"`
|
|
|
|
// the `jti` (JWT ID) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.7
|
|
ID string `json:"jti,omitempty"`
|
|
}
|
|
|
|
// GetExpiryAt implements the Claims interface.
|
|
func (c RegisteredClaims) GetExpiryAt() *NumericDate {
|
|
return c.ExpiresAt
|
|
}
|
|
|
|
// GetNotBefore implements the Claims interface.
|
|
func (c RegisteredClaims) GetNotBefore() *NumericDate {
|
|
return c.NotBefore
|
|
}
|
|
|
|
// GetIssuedAt implements the Claims interface.
|
|
func (c RegisteredClaims) GetIssuedAt() *NumericDate {
|
|
return c.IssuedAt
|
|
}
|
|
|
|
// GetAudience implements the Claims interface.
|
|
func (c RegisteredClaims) GetAudience() ClaimStrings {
|
|
return c.Audience
|
|
}
|
|
|
|
// GetIssuer implements the Claims interface.
|
|
func (c RegisteredClaims) GetIssuer() string {
|
|
return c.Issuer
|
|
}
|