Documentation
¶
Index ¶
Constants ¶
const ( RoleAdmin = "ADMIN" RolePowerUser = "POWERUSER" RoleUser = "USER" RoleOrgAdmin = "ORGADMIN" )
These are the expected values for Claims.Roles.
const Key ctxKey = 1
Key is used to store/retrieve a Claims value from a context.Context.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Authenticator ¶
type Authenticator struct {
// contains filtered or unexported fields
}
Authenticator is used to authenticate clients. It can generate a token for a set of user claims and recreate the claims by parsing the token.
func NewAuthenticator ¶
func NewAuthenticator(key *rsa.PrivateKey, keyID, algorithm string, publicKeyFunc KeyFunc) (*Authenticator, error)
NewAuthenticator creates an *Authenticator for use. It will error if: - The private key is nil. - The public key func is nil. - The key ID is blank. - The specified algorithm is unsupported.
func (*Authenticator) GenerateToken ¶
func (a *Authenticator) GenerateToken(claims Claims) (string, error)
GenerateToken generates a signed JWT token string representing the user Claims.
func (*Authenticator) ParseClaims ¶
func (a *Authenticator) ParseClaims(tknStr string) (Claims, error)
ParseClaims recreates the Claims that were used to generate a token. It verifies that the token was signed using our key.
type Claims ¶
type Claims struct { Roles []string `json:"roles"` User string `json:"user"` Organization string `json:"organization"` jwt.StandardClaims }
Claims represents the authorization claims transmitted via a JWT. TODO: add scope to claims
func NewClaims ¶
func NewClaims(subject string, user string, roles []string, organization string, now time.Time, expires time.Duration) Claims
NewClaims constructs a Claims value for the identified user. The Claims expire within a specified duration of the provided time. Additional fields of the Claims can be set after calling NewClaims is desired.
type KeyFunc ¶
KeyFunc is used to map a JWT key id (kid) to the corresponding public key. It is a requirement for creating an Authenticator.
* Private keys should be rotated. During the transition period, tokens signed with the old and new keys can coexist by looking up the correct public key by key id (kid).
* Key-id-to-public-key resolution is usually accomplished via a public JWKS endpoint. See https://auth0.com/docs/jwks for more details.