func (m *Middleware) IsAuthenticated(next chd.ContextHandler) chd.ContextHandler { return chd.ContextHandlerFunc(func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { bearer := osin.CheckBearerAuth(req) if bearer == nil { log.WithFields(log.Fields{ "authentication": "invalid", "error": errors.New("No bearer token given"), "valid": false, }).Warn(`Authentication invalid.`) rw.WriteHeader(http.StatusUnauthorized) return } if authenticated, err := m.Client.IsAuthenticated(bearer.Code); err != nil { log.WithFields(log.Fields{ "authentication": "invalid", "error": err, "valid": authenticated, }).Warn(`Authentication invalid.`) rw.WriteHeader(http.StatusUnauthorized) return } else if !authenticated { log.WithFields(log.Fields{ "authentication": "invalid", "error": nil, "valid": authenticated, }).Warn(`Authentication invalid.`) rw.WriteHeader(http.StatusUnauthorized) return } log.WithFields(log.Fields{"authentication": "success"}).Info(`Authenticated.`) next.ServeHTTPContext(ctx, rw, req) }) }
func (m *Middleware) IsAuthenticated(next chd.ContextHandler) chd.ContextHandler { return chd.ContextHandlerFunc(func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { if !authcon.IsAuthenticatedFromContext(ctx) { log.WithFields(log.Fields{"authentication": "fail"}).Warn(`Not able to get authorization from context.`) pkg.HttpError(rw, errors.New("Unauthorized"), http.StatusUnauthorized) return } subject, err := authcon.SubjectFromContext(ctx) if err != nil { log.WithFields(log.Fields{"authentication": "fail"}).Warnf("Subject extraction failed: %s", err) pkg.HttpError(rw, errors.New("Unauthorized"), http.StatusUnauthorized) return } else if subject == "" { log.WithFields(log.Fields{"authentication": "fail"}).Warnf("No subject given.") pkg.HttpError(rw, errors.New("Unauthorized"), http.StatusUnauthorized) return } log.WithFields(log.Fields{"authentication": "success"}).Infof(`Authenticated subject "%s".`, subject) next.ServeHTTPContext(ctx, rw, req) }) }
func (m *Middleware) ExtractAuthentication(next chd.ContextHandler) chd.ContextHandler { return chd.ContextHandlerFunc(func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { ctx = authcon.NewContextFromAuthorization(ctx, req, m.jwtService, m.policyStore) next.ServeHTTPContext(ctx, rw, req) }) }