//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); } }
//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); }
//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); } }
//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); }
//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); }
//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); }
//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); }
//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); } }
//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); } }