Windows标识基础和端口转发(Windows Identity Foundation and P

2019-10-17 17:01发布

有净cofiguration:

客户端 - FW - 为

IIS正在监听8080端口,对IIS Web应用程序,例如MyApp的。 FW实现简单的端口转发(它取代80端口到端口8080)。 假设以下情况:

客户端请求http://MyWebSite/MyApp/Index.aspx ,FW改变非标准端口80到8080和请求是http://MyWebSite:8080/MyApp/Index.aspx 。 IIS返回到客户端请求的页面Index.aspx的一两importatn件事:如果在浏览器的用户类型http://MyWebSite/myapp/index.aspx IIS返回http://MyWebSite/MyApp/Index.aspx (所以它改变了根据URL地址实际应用名称)。 一切正常。

但是,如果我在非标准管道WIF插入出现的问题。 例如,我想MyApp的只接受经过验证的用户。 我想将用户重定向到一些身份提供商。 如果用户试图获得一个网页http://MyWebSite/MyApp/Index.a SPX,一切正常,用户被重定向到IP。 但是,如果用户正在试图获得http://MyWevSite/myapp/index.aspx (小写广告应用程式名称),IIS返回到客户端重定向到http://MyWebSite:8080/MyApp/Index.aspx 。 由于8080端口上的用户FW封闭得到一个错误。 如果我从我的应用程序中删除WIF再次一切工作正常。

有没有人遇到SICH的问题吗?

Answer 1:

问题是由反射器发现,它是在WIF的的CookieHandler。

浏览器只发送如果请求的路径相匹配(大小写sensetive)的路径被设定的CookieHandler饼干(默认情况下应用程序的虚拟目录上的IIS)。 当WIF处理请求时,它要求的路径CokkieHandler的路径。 如果它们不匹配(区分sensetive)WIF认为刚刚输入错误的套管的URL,但他或她仍希望访问应用中的用户,但用户的浏览器不会发送会话cookie,因为情况不匹配,所以WIF的的CookieHandler使得重定向到正确的URL,但它不知道真正的端口号什么,所以刚才添加的请求的端口号来重定向答案。 浏览器试图使重定向请求的端口上FW关闭,我们得到一个错误。

在.NET 4.5 FW您可以覆盖使用自己定制的CookieHandler和实施其MatchCookiePath方法(例如,你可以从你的应用程序配置文件中添加特殊的端口号)的CookieHandler的默认行为。

您也可以只使用降低的情况下URL和应用程序的名称,并降低每个请求之前WIF已经开始对其进行处理,那么就不会有重定向。



文章来源: Windows Identity Foundation and Port Forwarding
标签: wif