Documentation ¶
Overview ¶
Package httpmiddleware contains middleware for REST API's built with Gorilla web toolkit (router) and OpenCensus (telemetry).
The package is using on "github.com/gorilla/mux" "go.opencensus.io/trace"
Examples ¶
An example including creating a router, adding a route and security as well as all middleware.
router := mux.NewRouter() const pathToCreateCompanyUser = "/companies/{companyID:[a-zA-Z0-9-]+}/users" router. HandleFunc(pathToCreateUser, http_middleware.ContentType( server.createCompanyUserHandler, http_model.MimeJSON, )). Methods(http.MethodPost) router. HandleFunc(pathToCreateUser, http_middleware.Options( []string{http.MethodPost}, []string{http_model.HeaderContentType}, )). Methods(http.MethodOptions) http_middleware. HandleSecureEndpoint(pathToCreateCompanyUser). Methods(http.MethodPost). AccessToken(). Authorize(ActionIAMCreateUser, http_middleware.NilResourceFunc). Authorize(ActionIAMInviteUser, companyOriginFromPathFunc) router.Use( // Middleware is run from top to bottom, order is important http_middleware.TrailingSlashMiddleware, http_middleware.CorsMiddleware, http_middleware.OpenCensusMiddleware, http_middleware.AuthenticateMiddleware("<jwkeyset_url>"), http_middleware.AuthorizeMiddleware(authorizerClient), )
Index ¶
- Constants
- Variables
- func AuthenticateMiddleware(keySetURL string) mux.MiddlewareFunc
- func AuthorizeMiddleware(authorizer Authorizer) mux.MiddlewareFunc
- func Configure(conf Config)
- func ContentType(next http.HandlerFunc, contentTypes ...string) http.HandlerFunc
- func CorsMiddleware(next http.Handler) http.Handler
- func OpenCensusMiddleware(next http.Handler) http.Handler
- func Options(methods, headers []string) http.HandlerFunc
- func Recovery(next http.Handler) http.Handler
- func TrailingSlashMiddleware(next http.Handler) http.Handler
- type Authorizer
- type Config
- type ResourceFunc
- type SecurityConfig
Constants ¶
const (
HeaderAuthorization = "Authorization"
)
Variables ¶
var NilResourceFunc = func(req *http.Request) (*common.Origin, error) { return nil, nil }
NilResourceFunc represents the Zero Value ResourceFunc.
Functions ¶
func AuthenticateMiddleware ¶
func AuthenticateMiddleware(keySetURL string) mux.MiddlewareFunc
AuthenticateMiddleware retrieves the security configuration for the matched route and handles Access Token validation and stores the token claims in the request context.
func AuthorizeMiddleware ¶
func AuthorizeMiddleware(authorizer Authorizer) mux.MiddlewareFunc
AuthorizeMiddleware retrieves the security configuration for the matched route and handles the configured authorizations.
func ContentType ¶
func ContentType(next http.HandlerFunc, contentTypes ...string) http.HandlerFunc
ContentType wraps a HandlerFunc and checks the incoming content-type with a list of allowed content types.
func CorsMiddleware ¶
CorsMiddleware adds Access-Control-Allow-Origin header to responses.
func OpenCensusMiddleware ¶
OpenCensusMiddleware adds request method and path template as span name.
func Options ¶
func Options(methods, headers []string) http.HandlerFunc
Options takes a list of methods and headers and returns an Options HandlerFunc
Types ¶
type Authorizer ¶
type ResourceFunc ¶
ResourceFunc takes a *http.Request and returns the resource to use for authorization.
type SecurityConfig ¶
type SecurityConfig struct {
// contains filtered or unexported fields
}
SecurityConfig represents how to authenticate and authorize a given endpoint and method.
func HandleSecureEndpoint ¶
func HandleSecureEndpoint(endpoint string) *SecurityConfig
HandleSecureEndpoint creates a new SecurityConfig for the specified endpoint.
func (*SecurityConfig) AccessToken ¶
func (s *SecurityConfig) AccessToken(headers ...string) *SecurityConfig
AccessToken adds Access Token as a mean for Authentication to the SecurityConfig. The header defaults to "Authorization".
func (*SecurityConfig) Authorize ¶
func (s *SecurityConfig) Authorize(action string, resourceFunc ResourceFunc) *SecurityConfig
Authorize adds an Authorization Configuration to the SecurityConfig.
func (*SecurityConfig) Methods ¶
func (s *SecurityConfig) Methods(methods ...string) *SecurityConfig
Methods adds methods to the SecurityConfig.