func (m *Middleware) IsAuthenticated(next hydcon.ContextHandler) hydcon.ContextHandler { return hydcon.ContextHandlerFunc(func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { if !hydcon.IsAuthenticatedFromContext(ctx) { log.WithFields(log.Fields{"authentication": "fail"}).Warn(`Not able to get authorization from context.`) errorHandler(rw, req, http.StatusUnauthorized) return } subject, err := hydcon.SubjectFromContext(ctx) if err != nil { log.WithFields(log.Fields{"authentication": "fail"}).Warnf("Subject extraction failed: %s", err) errorHandler(rw, req, http.StatusUnauthorized) return } else if subject == "" { log.WithFields(log.Fields{"authentication": "fail"}).Warnf("No subject given.") errorHandler(rw, req, http.StatusUnauthorized) return } log.WithFields(log.Fields{"authentication": "success"}).Infof(`Authenticated subject "%s".`, subject) next.ServeHTTPContext(ctx, rw, req) }) }
func (m *Middleware) ExtractAuthentication(next hydcon.ContextHandler) hydcon.ContextHandler { return hydcon.ContextHandlerFunc(func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { ctx = hydcon.NewContextFromAuthorization(ctx, req, m.jwtService, m.policyStore) next.ServeHTTPContext(ctx, rw, req) }) }