Documentation ¶
Overview ¶
Package jwtauth includes helper functions for creating HTTP clients and servers that can perform JWT authorization via Bearer tokens.
Index ¶
Constants ¶
const ( // DefaultTokenLifetime is the default duration tokens are valid for. DefaultTokenLifetime = 10 * time.Minute // DefaultAcceptableSkew is the clock skew allowed between token creation and token validation // machines. Tokens are not valid before (iat - clock_skew) and after (exp + clock_skew). DefaultAcceptableSkew = 5 * time.Second )
Variables ¶
This section is empty.
Functions ¶
func NewHTTPClient ¶
func NewHTTPClient(src TokenSource) *http.Client
NewHTTPClient constructs a new HTTP client that attempts to perform authorization via Bearer tokens created by src.
If src is nil then a default HTTP client is returned (i.e., one that does not perform any authorization).
For a simple example of how to use this, see the test.
Types ¶
type Error ¶
type Error struct { // Code is the HTTP code to send back to the client. Code int // Title is a short description of the error. Title string }
Error models an error that can be sent in the respresentation of an OpenAPI JSON error, as defined in the CA OpenAPI Specification.
func (*Error) Write ¶
func (e *Error) Write(rw http.ResponseWriter)
type HTTPVerifier ¶
type HTTPVerifier struct { // Generator that creates keys for HS256. For security reasons, the keys must be // at least 256-bit long (see https://tools.ietf.org/html/rfc7518#section-3.2). If the key is // not sufficiently long, token creation will return an error. Generator KeyFunc // Logger is an optional Logger to be used for listing successful/unsuccessful authorization // attempts. If nil, no logging is done. Logger log.Logger }
HTTPVerifier verifies a JWT token as defined by the SCION CA JWT specification.
The only accepted algorithm is HS256.
func (*HTTPVerifier) AddAuthorization ¶
func (v *HTTPVerifier) AddAuthorization(handler http.Handler) http.Handler
AddAuthorization decorates handler with a step that first performs JWT Bearer authorization before chaining the call to the initial handler.
type JWTTokenSource ¶
type JWTTokenSource struct { // Subject is an informational field that will be used as the JWT "sub" and // "iss" claims. If empty, the "sub" and "iss" claims are not set. Subject string // Lifetime is the duration a token is valid for. If it is 0, then DefaultTokenLifetime is // used. Lifetime time.Duration // IssuedAt is the timestamp when the token should report that it was issued. Values are // rounded down to whole seconds. If not set, time.Now() is used instead. IssuedAt time.Time // Generator that creates symmetric keys for HS256. For security // reasons, the generated key must be at least 256-bit long (see // https://tools.ietf.org/html/rfc7518#section-3.2). If the key is not // sufficiently long, token creation will return an error. Generator KeyFunc }
JWTTokenSource creates JWT tokens as defined by the SCION CA JWT specification.
The signature algorithm is set to HS256.
func (*JWTTokenSource) Token ¶
func (s *JWTTokenSource) Token() (*Token, error)
type Token ¶
type Token struct {
// contains filtered or unexported fields
}
Token is an HTTP Bearer token used by the SCION control-plane.
The String method returns the representation of the token as it should be used in HTTP headers.
type TokenSource ¶
A TokenSource creates Bearer tokens for HTTP clients to use.