1 package jwt 2 3 // RegisteredClaims are a structured version of the JWT Claims Set, 4 // restricted to Registered Claim Names, as referenced at 5 // https://datatracker.ietf.org/doc/html/rfc7519#section-4.1 6 // 7 // This type can be used on its own, but then additional private and 8 // public claims embedded in the JWT will not be parsed. The typical use-case 9 // therefore is to embedded this in a user-defined claim type. 10 // 11 // See examples for how to use this with your own claim types. 12 type RegisteredClaims struct { 13 // the `iss` (Issuer) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.1 14 Issuer string `json:"iss,omitempty"` 15 16 // the `sub` (Subject) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.2 17 Subject string `json:"sub,omitempty"` 18 19 // the `aud` (Audience) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3 20 Audience ClaimStrings `json:"aud,omitempty"` 21 22 // the `exp` (Expiration Time) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.4 23 ExpiresAt *NumericDate `json:"exp,omitempty"` 24 25 // the `nbf` (Not Before) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.5 26 NotBefore *NumericDate `json:"nbf,omitempty"` 27 28 // the `iat` (Issued At) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.6 29 IssuedAt *NumericDate `json:"iat,omitempty"` 30 31 // the `jti` (JWT ID) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.7 32 ID string `json:"jti,omitempty"` 33 } 34 35 // GetExpirationTime implements the Claims interface. 36 func (c RegisteredClaims) GetExpirationTime() (*NumericDate, error) { 37 return c.ExpiresAt, nil 38 } 39 40 // GetNotBefore implements the Claims interface. 41 func (c RegisteredClaims) GetNotBefore() (*NumericDate, error) { 42 return c.NotBefore, nil 43 } 44 45 // GetIssuedAt implements the Claims interface. 46 func (c RegisteredClaims) GetIssuedAt() (*NumericDate, error) { 47 return c.IssuedAt, nil 48 } 49 50 // GetAudience implements the Claims interface. 51 func (c RegisteredClaims) GetAudience() (ClaimStrings, error) { 52 return c.Audience, nil 53 } 54 55 // GetIssuer implements the Claims interface. 56 func (c RegisteredClaims) GetIssuer() (string, error) { 57 return c.Issuer, nil 58 } 59 60 // GetSubject implements the Claims interface. 61 func (c RegisteredClaims) GetSubject() (string, error) { 62 return c.Subject, nil 63 } 64