Beispiel #1
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: @Override public void doFilter(final ServletRequest req, final ServletResponse resp, FilterChain chain) throws java.io.IOException, ServletException
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
	  public override void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
	  {

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final boolean isContentTypeJson = CONTENT_TYPE_JSON_PATTERN.matcher(req.getContentType() == null ? "" : req.getContentType()).find();
		bool isContentTypeJson = CONTENT_TYPE_JSON_PATTERN.matcher(req.ContentType == null ? "" : req.ContentType).find();

		if (isContentTypeJson)
		{
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.io.PushbackInputStream requestBody = new java.io.PushbackInputStream(req.getInputStream());
		  PushbackInputStream requestBody = new PushbackInputStream(req.InputStream);
		  int firstByte = requestBody.read();
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final boolean isBodyEmpty = firstByte == -1;
		  bool isBodyEmpty = firstByte == -1;
		  requestBody.unread(firstByte);

		  HttpServletRequestWrapper wrappedRequest = new HttpServletRequestWrapperAnonymousInnerClass(this, (HttpServletRequest) req, requestBody, isBodyEmpty);

		  chain.doFilter(wrappedRequest, resp);
		}
		else
		{
		  chain.doFilter(req, resp);
		}
	  }
Beispiel #2
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws java.io.IOException, javax.servlet.ServletException
        public override void DoFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        {
            ValidateRequestType(request);
            ValidateResponseType(response);

            HttpServletRequest httpReq = ( HttpServletRequest )request;
            string             path    = httpReq.ContextPath + (httpReq.PathInfo == null ? "" : httpReq.PathInfo);

            bool requestIsForbidden = false;

            foreach (UriPathWildcardMatcher uriPathWildcardMatcher in _rules.Keys)
            {
                if (uriPathWildcardMatcher.Matches(path))
                {
                    HashSet <ForbiddingSecurityRule> securityRules = _rules[uriPathWildcardMatcher];
                    foreach (ForbiddingSecurityRule securityRule in securityRules)
                    {
                        // 401 on the first failed rule we come along
                        if (!securityRule.IsAuthorized(httpReq))
                        {
                            CreateUnauthorizedChallenge(response, securityRule);
                            return;
                        }
                        requestIsForbidden |= securityRule.IsForbidden(httpReq);
                    }
                }
            }
            if (requestIsForbidden)
            {
                CreateForbiddenResponse(response);
                return;
            }

            chain.doFilter(request, response);
        }
Beispiel #3
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void doFilter(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse, javax.servlet.FilterChain filterChain) throws java.io.IOException, javax.servlet.ServletException
        public override void DoFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        {
            ValidateRequestType(servletRequest);
            ValidateResponseType(servletResponse);

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.servlet.http.HttpServletRequest request = (javax.servlet.http.HttpServletRequest) servletRequest;
            HttpServletRequest request = ( HttpServletRequest )servletRequest;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.servlet.http.HttpServletResponse response = (javax.servlet.http.HttpServletResponse) servletResponse;
            HttpServletResponse response = ( HttpServletResponse )servletResponse;

            try
            {
                LoginContext loginContext = AuthDisabledLoginContext;
                string       userAgent    = request.getHeader(HttpHeaders.USER_AGENT);

                JettyHttpConnection.updateUserForCurrentConnection(loginContext.Subject().username(), userAgent);

                filterChain.doFilter(new AuthorizedRequestWrapper(BASIC_AUTH, "neo4j", request, loginContext), servletResponse);
            }
            catch (AuthorizationViolationException e)
            {
                UnauthorizedAccess(e.Message).accept(response);
            }
        }
Beispiel #4
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void doFilter(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse, javax.servlet.FilterChain chain) throws java.io.IOException, javax.servlet.ServletException
        public override void DoFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
        {
            HttpServletRequest  request  = ( HttpServletRequest )servletRequest;
            HttpServletResponse response = ( HttpServletResponse )servletResponse;

            response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN, _accessControlAllowOrigin);
            if (!string.ReferenceEquals(_vary, null))
            {
                response.setHeader(VARY, _vary);
            }

            IEnumerator <string> requestMethodEnumeration = request.getHeaders(ACCESS_CONTROL_REQUEST_METHOD);

            if (requestMethodEnumeration != null)
            {
                while (requestMethodEnumeration.MoveNext())
                {
                    string requestMethod = requestMethodEnumeration.Current;
                    AddAllowedMethodIfValid(requestMethod, response);
                }
            }

            IEnumerator <string> requestHeaderEnumeration = request.getHeaders(ACCESS_CONTROL_REQUEST_HEADERS);

            if (requestHeaderEnumeration != null)
            {
                while (requestHeaderEnumeration.MoveNext())
                {
                    string requestHeader = requestHeaderEnumeration.Current;
                    AddAllowedHeaderIfValid(requestHeader, response);
                }
            }

            chain.doFilter(request, response);
        }
Beispiel #5
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void doFilter(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse, javax.servlet.FilterChain filterChain) throws java.io.IOException, javax.servlet.ServletException
        public override void DoFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        {
            HttpServletRequest  request  = ( HttpServletRequest )servletRequest;
            HttpServletResponse response = ( HttpServletResponse )servletResponse;

            if (request.ServletPath != null && request.ServletPath.EndsWith(".html"))
            {
                response.addHeader("Cache-Control", "private, no-cache, no-store, proxy-revalidate, no-transform");
                response.addHeader("Pragma", "no-cache");
                response.addHeader("Content-Security-Policy", "frame-ancestors 'none'");
                response.addHeader("X-Frame-Options", "DENY");
                response.addHeader("X-Content-Type-Options", "nosniff");
                response.addHeader("X-XSS-Protection", "1; mode=block");
            }
            filterChain.doFilter(servletRequest, servletResponse);
        }
Beispiel #6
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws java.io.IOException, ServletException
        public virtual void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.servlet.http.HttpServletRequest request = (javax.servlet.http.HttpServletRequest) req;
            HttpServletRequest request = (HttpServletRequest)req;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.servlet.http.HttpServletResponse response = (javax.servlet.http.HttpServletResponse) resp;
            HttpServletResponse response = (HttpServletResponse)resp;

            if ("GET".Equals(request.Method) && !request.RequestURI.EndsWith("xml"))
            {
                response.setHeader("Cache-Control", "no-cache");
            }

            chain.doFilter(req, resp);
        }
Beispiel #7
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void doFilter(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse, javax.servlet.FilterChain filterChain) throws java.io.IOException, javax.servlet.ServletException
        public override void DoFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        {
            try
            {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.servlet.http.HttpServletRequest request = (javax.servlet.http.HttpServletRequest) servletRequest;
                HttpServletRequest request = ( HttpServletRequest )servletRequest;
                string             ua      = request.getHeader("User-Agent");
                if (!string.ReferenceEquals(ua, null) && ua.Length > 0)
                {
                    _output.add(ua.Split(" ", true)[0]);
                }
            }
            catch (Exception)
            {
                // We're fine with that
            }

            filterChain.doFilter(servletRequest, servletResponse);
        }
Beispiel #8
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void doFilter(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse, javax.servlet.FilterChain filterChain) throws java.io.IOException, javax.servlet.ServletException
        public override void DoFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        {
            ValidateRequestType(servletRequest);
            ValidateResponseType(servletResponse);

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.servlet.http.HttpServletRequest request = (javax.servlet.http.HttpServletRequest) servletRequest;
            HttpServletRequest request = ( HttpServletRequest )servletRequest;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.servlet.http.HttpServletResponse response = (javax.servlet.http.HttpServletResponse) servletResponse;
            HttpServletResponse response = ( HttpServletResponse )servletResponse;

            string userAgent = request.getHeader(HttpHeaders.USER_AGENT);

            // username is only known after authentication, make connection aware of the user-agent
            JettyHttpConnection.updateUserForCurrentConnection(null, userAgent);

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final String path = request.getContextPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
            string path = request.ContextPath + (request.PathInfo == null ? "" : request.PathInfo);

            if (request.Method.Equals("OPTIONS") || Whitelisted(path))
            {
                // NOTE: If starting transactions with access mode on whitelisted uris should be possible we need to
                //       wrap servletRequest in an AuthorizedRequestWrapper here
                filterChain.doFilter(servletRequest, servletResponse);
                return;
            }

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final String header = request.getHeader(javax.ws.rs.core.HttpHeaders.AUTHORIZATION);
            string header = request.getHeader(HttpHeaders.AUTHORIZATION);

            if (string.ReferenceEquals(header, null))
            {
                RequestAuthentication(request, _noHeader).accept(response);
                return;
            }

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final String[] usernameAndPassword = extractCredential(header);
            string[] usernameAndPassword = ExtractCredential(header);
            if (usernameAndPassword == null)
            {
                _badHeader.accept(response);
                return;
            }

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final String username = usernameAndPassword[0];
            string username = usernameAndPassword[0];
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final String password = usernameAndPassword[1];
            string password = usernameAndPassword[1];

            try
            {
                LoginContext securityContext = Authenticate(username, password);
                // username is now known, make connection aware of both username and user-agent
                JettyHttpConnection.updateUserForCurrentConnection(username, userAgent);

                switch (securityContext.Subject().AuthenticationResult)
                {
                case PASSWORD_CHANGE_REQUIRED:
                    if (!_passwordChangeWhitelist.matcher(path).matches())
                    {
                        PasswordChangeRequired(username, BaseURL(request)).accept(response);
                        return;
                    }

                // fall through
                case SUCCESS:
                    try
                    {
                        filterChain.doFilter(new AuthorizedRequestWrapper(BASIC_AUTH, username, request, securityContext), servletResponse);
                    }
                    catch (AuthorizationViolationException e)
                    {
                        UnauthorizedAccess(e.Message).accept(response);
                    }
                    return;

                case TOO_MANY_ATTEMPTS:
                    _tooManyAttempts.accept(response);
                    return;

                default:
                    _log.warn("Failed authentication attempt for '%s' from %s", username, request.RemoteAddr);
                    RequestAuthentication(request, _invalidCredential).accept(response);
                    break;
                }
            }
            catch (InvalidAuthTokenException e)
            {
                RequestAuthentication(request, InvalidAuthToken(e.Message)).accept(response);
            }
            catch (AuthProviderTimeoutException)
            {
                _authProviderTimeout.accept(response);
            }
            catch (AuthProviderFailedException)
            {
                _authProviderFailed.accept(response);
            }
        }
Beispiel #9
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: @Override public void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws java.io.IOException, javax.servlet.ServletException
        public override void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        {
            HttpServletRequest  req  = (HttpServletRequest)request;
            HttpServletResponse resp = (HttpServletResponse)response;

            string servletPath = servletPathPrefix;

            if (string.ReferenceEquals(servletPath, null))
            {
                servletPath = req.ServletPath;
            }
            string requestUrl = req.RequestURI.substring(req.ContextPath.length() + servletPath.Length);

            bool requiresEngineAuthentication = requiresEngineAuthentication(requestUrl);

            if (!requiresEngineAuthentication)
            {
                chain.doFilter(request, response);
                return;
            }

            string        engineName = extractEngineName(requestUrl);
            ProcessEngine engine     = getAddressedEngine(engineName);

            if (engine == null)
            {
                resp.Status = Status.NOT_FOUND.StatusCode;
                ExceptionDto exceptionDto = new ExceptionDto();
                exceptionDto.Type    = typeof(InvalidRequestException).Name;
                exceptionDto.Message = "Process engine " + engineName + " not available";
                ObjectMapper objectMapper = new ObjectMapper();

                resp.ContentType = MediaType.APPLICATION_JSON;
                objectMapper.writer().writeValue(resp.Writer, exceptionDto);
                resp.Writer.flush();

                return;
            }

            AuthenticationResult authenticationResult = authenticationProvider.extractAuthenticatedUser(req, engine);

            if (authenticationResult.Authenticated)
            {
                try
                {
                    string         authenticatedUser = authenticationResult.AuthenticatedUser;
                    IList <string> groups            = authenticationResult.Groups;
                    IList <string> tenants           = authenticationResult.Tenants;
                    setAuthenticatedUser(engine, authenticatedUser, groups, tenants);
                    chain.doFilter(request, response);
                }
                finally
                {
                    clearAuthentication(engine);
                }
            }
            else
            {
                resp.Status = Status.UNAUTHORIZED.StatusCode;
                authenticationProvider.augmentResponseByAuthenticationChallenge(resp, engine);
            }
        }