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 AuthenticateMiddlewareV3() 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. Deprecated: Use AuthenticateMiddlewareV3() instead
func AuthenticateMiddlewareV3 ¶ added in v2.1.1
func AuthenticateMiddlewareV3() mux.MiddlewareFunc
AuthenticateMiddlewareV3 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.