code: func (s *Server) InstallAuthFilter() {
  	s.restfulCont.Filter(func(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) {
  		// Authenticate
  		info, ok, err := s.auth.AuthenticateRequest(req.Request)
  		if err != nil {
  			klog.Errorf("Unable to authenticate the request due to an error: %v", err)
  			resp.WriteErrorString(http.StatusUnauthorized, "Unauthorized")
  			return
  		}
  		if !ok {
  			resp.WriteErrorString(http.StatusUnauthorized, "Unauthorized")
  			return
  		}
  
  		// Get authorization attributes
  		attrs := s.auth.GetRequestAttributes(info.User, req.Request)
  
  		// Authorize
  		decision, _, err := s.auth.Authorize(attrs)
  		if err != nil {
  			msg := fmt.Sprintf("Authorization error (user=%s, verb=%s, resource=%s, subresource=%s)", attrs.GetUser().GetName(), attrs.GetVerb(), attrs.GetResource(), attrs.GetSubresource())
  			klog.Errorf(msg, err)
  			resp.WriteErrorString(http.StatusInternalServerError, msg)
  			return
  		}
  		if decision != authorizer.DecisionAllow {
  			msg := fmt.Sprintf("Forbidden (user=%s, verb=%s, resource=%s, subresource=%s)", attrs.GetUser().GetName(), attrs.GetVerb(), attrs.GetResource(), attrs.GetSubresource())
  			klog.V(2).Info(msg)
  			resp.WriteErrorString(http.StatusForbidden, msg)
  			return
  		}
  
  		// Continue
  		chain.ProcessFilter(req, resp)
  	})
  }
docs: // InstallAuthFilter installs authentication filters with the restful Container.