Documentation ¶
Overview ¶
caddyjwt is a Caddy Module - who facilitates JWT authentication.
Index ¶
Constants ¶
This section is empty.
Variables ¶
Functions ¶
This section is empty.
Types ¶
type JWTAuth ¶
type JWTAuth struct { // SignKey is the key used by the signing algorithm to verify the signature. // // For symmetric algorithems, use the key directly. e.g. // // "<secret_key_bytes_in_base64_format>". // // For asymmetric algorithems, use the public key in x509 PEM format. e.g. // // -----BEGIN PUBLIC KEY----- // ... // -----END PUBLIC KEY----- // // For remote JWK (JSON Web Keys), specify the URL. e.g. // // https://www.gstatic.com/iap/verify/public_key-jwk SignKey string `json:"sign_key"` // FromQuery defines a list of names to get tokens from the query parameters // of an HTTP request. // // If multiple keys were given, all the corresponding query // values will be treated as candidate tokens. And we will verify each of // them until we got a valid one. // // Priority: from_query > from_header > from_cookies. FromQuery []string `json:"from_query"` // FromHeader works like FromQuery. But defines a list of names to get // tokens from the HTTP header. FromHeader []string `json:"from_header"` // FromCookie works like FromQuery. But defines a list of names to get tokens // from the HTTP cookies. FromCookies []string `json:"from_cookies"` // IssuerWhitelist defines a list of issuers. A non-empty list turns on "iss // verification": the "iss" claim must exist in the given JWT payload. And // the value of the "iss" claim must be on the whitelist in order to pass // the verification. IssuerWhitelist []string `json:"issuer_whitelist"` // AudienceWhitelist defines a list of audiences. A non-empty list turns on // "aud verification": the "aud" claim must exist in the given JWT payload. // The verification will pass as long as one of the "aud" values is on the // whitelist. AudienceWhitelist []string `json:"audience_whitelist"` // UserClaims defines a list of names to find the ID of the authenticated user. // // By default, this config will be set to []string{"sub"}. // // If multiple names were given, we will use the first non-empty value of the key // in the JWT payload as the ID of the authenticated user. i.e. The placeholder // {http.auth.user.id} will be set to the ID. // // For example, []string{"uid", "username"} will set "eva" as the final user ID // from JWT payload: { "username": "eva" }. // // If no non-empty values found, leaves it unauthenticated. UserClaims []string `json:"user_claims"` // MetaClaims defines a map to populate {http.auth.user.*} metadata placeholders. // The key is the claim in the JWT payload, the value is the placeholder name. // e.g. {"IsAdmin": "is_admin"} can populate {http.auth.user.is_admin} with // the value of `IsAdmin` in the JWT payload if found, otherwise "". // // NOTE: The name in the placeholder should be adhere to Caddy conventions // (snake_casing). // // Caddyfile: // Use syntax `<claim>[-> <placeholder>]` to define a map item. The placeholder is // optional, if not specified, use the same name as the claim. // e.g. // // meta_claims "IsAdmin -> is_admin" "group" // // is equal to {"IsAdmin": "is_admin", "group": "group"}. // // Since v0.6.0, nested claim path is also supported, e.g. // For the following JWT payload: // // { ..., "user_info": { "role": "admin" }} // // If you want to populate {http.auth.user.role} with "admin", you can use // // meta_claims "user_info.role -> role" // // Use dot notation to access nested claims. MetaClaims map[string]string `json:"meta_claims"` // contains filtered or unexported fields }
JWTAuth facilitates JWT (JSON Web Token) authentication.
func (*JWTAuth) Authenticate ¶
Authenticate validates the JWT in the request and returns the user, if valid.
func (JWTAuth) CaddyModule ¶
func (JWTAuth) CaddyModule() caddy.ModuleInfo
CaddyModule implements caddy.Module interface.
Click to show internal directories.
Click to hide internal directories.