【发布时间】:2014-06-13 14:03:46
【问题描述】:
我的生产设置如下:
- M1 - ASP.NET 网站
- M2 - IIS URL 重写 2.0 + ARR 3.0
使用 IIS URL 重写,对 M2 的任何请求,例如 http://m2/app/login.aspx 将被重定向到 M1 作为 http: //m1/app/login.aspx.
在 M1 上,已在网站上实现 ASP.NET Open Auth 以使用 Google 外部身份验证。当用户点击 Google 按钮时,浏览器将被重定向到 Google 登录页面以允许用户进行身份验证。
但是当从 M2 访问网站时,.net oAuth(https://accounts.google.com/[query-string] 生成的重定向 url ) 重定向到 Google,正在被 URL Rewrite 替换为 http://m2/[query-string]。
所以要明确一点;当请求通过外部身份验证提供程序进行身份验证时,将返回 302 重定向。通常这种形式可能看起来像:
响应标头:
...
位置:https://accounts.google.com/o/oauth2/auth?big_long_query_string
...
此重定向由位于代理服务器 (M2 - IIS URL Rewrite 2.0 + ARR 3.0) 后面的服务器 (M1) 创建。所以重写服务器将Location头重写为:
响应标头:
...
位置:http://M1/o/oauth2/auth?big_long_query_string
...
我们需要的是在重定向时不重写位置 URL 的规则。它也只能针对某些重定向。大多数时候,这里提到的行为都是需要的,因为所有重定向都被重定向到主代理服务器。有人可以为某些重定向提出解决方案或解决方法吗?
【问题讨论】:
-
你有没有想出解决方案,如果你这样做了,现在是回答的好时机,我遇到了完全相同的问题。
-
让我们来回答这个傻瓜!!!!!!!
-
我们需要重写规则来检查哪里出了问题。
标签: asp.net oauth url-rewrite-module arr