Quantcast
Channel: Application Request Routing (ARR)
Viewing all 739 articles
Browse latest View live

How to filter authenticated traffic on reverse proxy

$
0
0

We have a requirement to set up a reverse proxy to our business partner. Basically they require all traffic to be sourced from a known IP address. In addition, traffic must be filtered such that only authenticated requests are passed on to them.

We will have a client application which uses forms authentication at source. At some point, an authenticated user will be redirected to the partner site and will be re-authenticated using a SSO token sent in an HTTP header. If the token is valid, the user will be logged in at the partner site and issued a session cookie. The session cookie will then be used to validate further requests from the source.

As I see it, in order for ARR to work it would need to do cookie domain re-writing on both the request and the response otherwise the cookie won’t be passed through correctly. It will also need to inspect outgoing requests to ensure they are authenticated before passing them on. To be secure this should be checking both the Forms Authentication cookie and the one returned from the partner site. Presumably it will not be sufficient to merely check for cookie presence as this could be spoofed. All this needs to operate using SSL as unsecured HTTP is not allowed by our partners. My question is, can ARR be configured to support such a scenario and if so, how?


Problems with setting up ARR reverse proxy

$
0
0

Dear all,

we are having following difficulties when trying to set-up the ARR.

On our server we are running IIS 8 and Tomcat.

On IIS we are on port 80 running our default web site and under this web site we are running some .NET application which are configured as Web Applications.

We have now developed our new web site which is running on Tomcat on port 8080.

We have enabled with ARR the reverse Proxy that if you ty for example www.site1.com, you receive content from tomcat and url is rewritten to www.site1.com (without the port). This Works ok.

The problem we are facing is follow:

When we are trying to go to our web application which is developed in .NET and hosted in IIS and not Tomcat (for examplewww.site1.com/webapp), we receive the feedback from Tomcat that this url was not found.

We have several these applications that are hosted in IIS under default web site, one is also in PHP technology.

When we used only IIS everything worked wel, now everythin id routed to Tomcat.

Can we somehow write exceptions what can not be forwarded to Tomcat?

Thank you for any help, I hope I was clear enough.

Kind regards,

Andrej

IIS 8.5 compression not working with ARR 3.0

$
0
0

Hi Guys,

We have multiple sub website and have root site. ARR machine has windows server 2012 R2 with IIS 8.5 installed along with ARR 3.0. I have already configured my compression setting at IIS level.

ISSUE:

When we try to run a sample application directly from ARR machine (sample hosted directly inside IIS) we get the expected result as with gzip compression response. 

When we change the IIS to allow request routing with version 3.0 installed and enabled. The response we get is not compressed. ARR 3.0 Trace help us identify the root cause as 

42.DYNAMIC_COMPRESSION_START13:34:43.004
43.DYNAMIC_COMPRESSION_NOT_SUCCESSReason="NO_ACCEPT_ENCODING"13:34:43.004
44.DYNAMIC_COMPRESSION_END

To support and enable the above option we have already have following configuration for outboundrules

<outboundRules><rule name="RestoreAcceptEncoding" preCondition="NeedsRestoringAcceptEncoding"><match pattern="^(.*)" serverVariable="HTTP_ACCEPT_ENCODING" /><action type="Rewrite" value="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" /></rule><preCondition name="NeedsRestoringAcceptEncoding"><add input="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" pattern=".+" /></preCondition>
.
.
.</outboundRules>

Now when we deply the same rules with machine windows server 2008 R2 with IIS 7.5 and ARR 2.5 everythings works fine. We are not sure what is really a problem or special configuration required to make this working with ARR 3, windows server 2012 r2 IIS 8.5.

Setting up ARR 3 with 2 IIS 7.5 App Servers on 2 Different Windows 2008R2 OS Servers

$
0
0

I'm sure this has been asked a million times. I know I have reviewed a million questions/tutorials on it. But I simply cannot get this to work.

I have an application on a windows 2008RS OS ran by IIS 7.5 app server.


I copied the application to another windows 2008RS OS box ran by IIS 7.5 app server.

I set up a third windows 2008rs os box with another IIS 7.5 app server where I installed via the web platform ARR. I followed the MS tutorial (mostly) (http://technet.microsoft.com/en-us/library/jj129543.aspx) on how to create your farm on this server by add the farm, naming it, and adding the servers via IP address. I created a self-signed cert in IIS on this box so I could offload HTTPS here and use clear text to talk to the two application servers I mentioned above. I show that they are online. But I show that they are "unhealthy". I pointed my domain to the this--the ARR server--but I keep getting a bad 502 proxy message. Before I set all of this up I know the application on each of the application servers were accessible and working.

So is this a correct set up? I don't want a content server etc. I want two identical application servers with my arr in front of them balancing the load. I handle sessions/cache via memcached that is on another server. My db is on yet another server.

After taking each one of the app servers offline and trying everything from https to http to http//doman:443 etc I would put it back online and take the other off. Same experience. I then read where the two application servers need to have "shared configuration"> I didn't think that applied to me. But I did it anyway. I exported the one's configuration to a file. Make it a network share. Then went to the other application server and mapped a drive to the shared configuration files. Then in IIS made it "shared configuration" by pointing the the first application server's export configuration. The only thing I noticed was the second application server appears to show everything like the first one in the site tree. Not what I wanted. But it was the same experience. (Is this really necessary in my set up situation since they are exact copies?)

So can someone help me understand what I am not understanding? Do I point my domain name to the ARR server? Do I have to test that my sites load with just the IP address before I can use ARR to balance requests? Do they both have to have directly accessible domain names themselves? And that is what I use with the ARR server to add the servers? Could this be my problem?

Thank you in advance

IIS ARR Reverse Proxy to Exchange 2003 OWA broken 404 error

$
0
0

I'm migrating 2003 to 2010, I have my Exchange 2010/2003 Server behind a Reverse Proxy (IIS ARR).

Now everything is working correctly with Exchange 2010 and internally, however, externally, when I go to the legacy server, I get served up with a 404 Error that's resembles IIS7 error instead of a IIS6 error. I get a 302 message in the IIS ARR logs and it looks like the external client tries to connect but then I get that error. It doesn't matter if it's a redirect or if go to the legacy site directly, it just returns that error. I have preserve host headers enabled.

I'm really close to just creating a mod_proxy box and using an additional IP, I however would not like to do that. Is there any reason why IIS ARR isn't passing the data along? I can talk to the 2003 server from the Reverse Proxy with no issues, it's just that hand off from the Reverse Proxy to the client is failing.

</div>

redirect everything to server farm, except specific url

$
0
0

A short summary of the problem: I want every request to example.com to be rewritten to a server-farm except requests to example.com/foo/bar. The requests to example.com/foo/bar should instead return a file from a local website on the server

Here's what I got so far:

I use url rewrite to send every request to example.com to a server farm:

<rule name="example.com" stopProcessing="true"><match url=".*" /><conditions logicalGrouping="MatchAll" trackAllCaptures="false"><add input="{HTTP_HOST}" pattern="^(www.)?example.com$" /></conditions><action type="Rewrite" url="http://server_farm/{R:0}" /></rule>

So I figured I needed another rule to match the specific url I don't want rewritten and put this above the previous rule in applicationHost.config:

<rule name="example.com specific url to not rewrite" enabled="true" stopProcessing="true"><match url=".*" /><conditions logicalGrouping="MatchAll" trackAllCaptures="false"><add input="{HTTP_HOST}" pattern="^(www.)?example.com$" /><add input="{REQUEST_URI}" pattern="foo/bar" /></conditions><action type="None" /></rule>

I then created a new website, localhost:8008 and use ARR on the example.com website to rewrite that specific url. Here's the web.config:

<?xml version="1.0" encoding="UTF-8"?><configuration><system.webServer><rewrite><rules><rule name="foo bar" patternSyntax="Wildcard" stopProcessing="true"><match url="/foo/bar" /><conditions><add input="{REQUEST_URI}" pattern="foo/bar" /></conditions><action type="Rewrite" url="http://localhost:8008/foo/bar" appendQueryString="false" /></rule></rules><outboundRules><rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1"><match filterByTags="A, Form, Img" pattern="^http(s)?://localhost:8008/(.*)" /><action type="Rewrite" value="http{R:1}://example.com/{R:2}" /></rule><preConditions><preCondition name="ResponseIsHtml1"><add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /></preCondition></preConditions></outboundRules></rewrite></system.webServer></configuration>

When I test the configuration I get a 404, and from the logs I can see that IIS is trying to fetch the file from the server farm, instead of following the rules and get the local file.

I guess there's a flaw in my configuration and I'll be the first to admit I'm not very familiar with how IIS handles this as I'm rather fresh on Windows Server-work. All help is much appreciated.

SSL Binding Change - ARR shared configuration

$
0
0

Hi,

This is probably more of a general IIS question but I wanted to post here since the environment is specifically built to host an ARR farm.

Environment: 8 node ARR farm running IIS Shared configuration.

We have one website accepting all inbound request.  The site is listening on multiple ports, each with its own SSL certificate binding.

We ran into a situation which required the SSL binding be updated with a different certificate already present in the certificate store.  The change needed to be applied quickly and on the fly, however, when I updated each node via the GUI by selecting website and port and selecting another certificate in the list of available certificates the change did not take effect immediately, and not with an IIS reset but finally applied but only after a full server reboot.  Any ideas why it take a reboot to apply such a change?  Is there a cache or memory that needs to be cleared or something?

Thanks!

Http to https redirect(hide port) with ARR

$
0
0

Hey guys,

i run a node.js server on port 3000 on a windows server using IISS. Now i want to redirect all request to my www.mywebsite.de to the https://www.mywebsite.de:3000. I did this using the url rewrite module. Additionally i want to hide the port in the url shown to the user. I googled it and found out that this should be possible with the Application Request routing module, but did not find a detailed article how to do this in combination with https redirect. I very new to configuring web servers so it would be nice if you could help me out :)

best regards Peter


ARR removes Sec-WebSocket-Extensions header from WebSocket handshake response

$
0
0

Hi,

I am attempting to employ ARR 3.0.1750 with IIS8 on Windows Server 2012 as a reverse proxy with WebSocket support and I have observed that the “Sec-WebSocket-Extensions” header is being stripped from the handshake response.

The specific scenario that I am encountering involves attempting to connect to a WebSocket from Google Chrome 38. Chrome sends a WebSocket upgrade request containing a “Sec-WebSocket-Extensions” header with a value of “permessage-deflate; client_max_window_bits”, this request is forwarded to my web application, which supports “permessage-deflate”, and a “Sec-WebSocket-Extensions” header with a value of “permessage-deflate” is returned. ARR appears to remove this header from the response returned to Chrome resulting in my web application being configured to send compressed messages and Chrome expecting uncompressed messages. Upon receipt of the first message Chrome concludes that it is corrupt and terminates the connection. Chrome does not appear to send the normal shutdown sequence under these circumstances which results in my server amassing a large number of socket connections between ARR and my web application, eventually exceeding the maximum number of permitted connections making the web application inaccessible until it is restarted, which clears the deadlocked connections.

In an attempt to avoid this situation I have added an “HTTP_Sec_WebSocket_Extensions” server variable to my rewrite configuration in order to overwrite any “Sec-WebSocket-Extensions” headers present in incoming requests with a bogus value but I would appreciate a modification to the handling of the handshake response in order make this configuration unnecessary.

Thanks

Peter

Multiple ports for Server Farm

$
0
0

I have an application that needs the following ports used\mapped in the Reverse Proxy.  How do you add them?

http 80

https 443

https 843

I see how to change ports but not add additional to a farm.

Thanks.

Basic Authentication ARR 3 / SharePoint 2013

$
0
0

I have been searching all around for a solution to this. I have Windows Server 2012 R2 running ARR 3. I'm trying to do a simple redirect to my SharePoint server, and it kicks me back to the root of the ARR server. 

My guess is that authentication isn't being passed to the client so that credentials can be sent through. Any assistance, direction or suggestions would be greatly appreciated. 

I am trying to do basic auth, but again I am not getting the dialog boxes on the client side. 

Thank you in advance! 

Arr and WAS 20 Minutes on Remotes Servers

$
0
0
Hello .
What is the life checking method for remote services using ARR .
My problem is I have many armed farms and each indivudual fit the check so that real servers can never release the RAM as the WAS waiting 20 minutes to kill the process is never fulfilled .

ARR is failing to handle the request in case the request refferer url has some unicode character.

Reset ARR statistics from C# (w/ or w/o WMI)

$
0
0

I am trying to create an app to list the ARR statistics from multiple server farms into a common table and allow admin to reset those statistics on one or more servers at same time. I think I might be able to use WMI_PerfFormattedData_ARRCounterProvider_ApplicationRequestRoutingServer class to view the stats, but even if I can view it, how do I reset those ARR statistics of any server via code? 

Perform Health Check against different port

$
0
0

Hi all, just a quick question, will the ARR health check work perfectly fine with checking if a different web site on a different port was operational instead of checking for content on the original site?

The reason I'm asking is to allow us to perform a take out of load function without going into ARR, that we take another "KeepAlive" web site offline to then ensure that ARR no longer sends traffic until we enable it again.

Or do we have to hit the ports that have been specifically configured within the Server Farm, which would only be the defaults of Port 80 and 443. Basically we're trying to ensure that the content we do check for is static as the end website is always subject to being content managed.

Tried it so far and despite the content being there, it always comes back as being down when testing with the verify URL testing button.

Thanks


ARR and client certificate authentication

$
0
0

Hello folks, have been looking at this all day today but no luck. We have have configured ARR servers to implement client certificate authentication on one particular directory on the website. We then have a URL rewrite rule which injects custom headers populated with the IIS cookie headers (e.g. CERT_COOKIE etc.) before rewriting the request to an app tier IIS web server which reads the custom headers and performs authentication against a database.

All this is working in principle.

However, the ARR server seems to be forwarding, what seems to be "cached" client certificate headers/details after the first user logs in. So further users end up getting logged into the wrong accounts.

I have tried searching on the web but not found our exact scenario. Can anyone tell me if ARR caches client client certificates? When forwarding (rewriting) the request to the App tier server the ARR server is the "client" and initiates a new SSL connection.

Any help would be appreciated.

Thanks

Dhananjay Modak

ARR - Windows Azure - How to handle fail over?

$
0
0

I am using ARR as reverse proxy server for the backend servers in windows azure.Is there any best way to handle fail over scenario?

ARR and NLB

$
0
0

I am working with ARR3, IIS8 and Server 2012R2. I have already gotten 1 ARR server to work with 2 IIS servers and 2 SQL servers (Using AlwaysOn HA). I am now wanting to add a second (at least) ARR server, set it up to mirror its settings from the existing one (so I can easily add more IIS servers) and use it initially as a hotspare.

The guide (using ARR1) to set up a redundant ARR server (active/passive) involves sharing the config between the servers.  When I do this step first, as it says to, I cannot install ARR using WebPI. It fails becuase of the shared config. If I install it and then set up shared config after, I cannot see the server farms option anymore so I would not be able to add any more servers to the farm, nor change any settings.

What am I missing or doing wrong?

IIS ARR with URLRewrite is not working ASP.NET MVC application

$
0
0

Hi.. I Installed ARR Version 2 and Enabled proxy settings (64 bit version). I created a rewrite rule as below. It will rewrite only if it meets specific condition. Its an ASP.NET MVC application.(both current and rewritten applicaitons)

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />

<modules runAllManagedModulesForAllRequests="true"> 

</modules> 
<rewrite>
<rules>
<rule name="Rule1" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{QUERY_STRING}" pattern="input=2" />
</conditions>
<action type="Rewrite" url="SomeOtherDomainURL/{R:1}" logRewrittenUrl="true" />
</rule> 
</rules>
</rewrite>

</system.webServer>

with above configuration rewrite is not working. 

I tried with Failed Requests Tracing. Url Rewrite rules are evaluated successfully.. After that ARR doesnt process the request. MVC Handler has been called and goes into default application processing.

But ARR and Url rewrite is working with legacy ASP.NET applicaiton. not working with MVC application. Please help me on this.

I tried with ARR Version 3 also. Also I tried with GlobalRules at server level.  but nothing works. 

Already I posted this in iis forum. http://forums.iis.net/p/1202756/2059641.aspx?Re+Very+Very+Urgent+IIS+Rewriting+with+ASP+NET+MVC+Applicaiton+is+not+working

IIS as forward proxy

$
0
0

First of all thanks to everyone who'll be so patient to answer this question.....

 I've actually tried to read this forum but, based on my not-so-deep knowledge of the matter, couldn't find an answer to my problem:

 Would it be possible to set up IIS to act as a web server and at the same time as a forward proxy? Would ARR be the solution for this? In detail:

1) IIS must receive classic incoming requests from Internet and forward them to Tomcat app servers listening behind another firewall layer. This first requirement is already accomplished using Jakarta Isapi Redirector filter and is not the problem

2) The web application managed by Tomcat must open HTTP and HTTPS connections versus many servers on the Internet and process the response obtained from them. The app servers cannot access the Internet directly, so I thought about using the web server for forwarding these requests to the Internet. Can I use IIS for this? Maybe installing ARR?

 Thank you

Viewing all 739 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>