【问题标题】:WIF passive federation with custom load balancer in place具有自定义负载平衡器的 WIF 被动联合
【发布时间】:2012-03-22 14:17:16
【问题描述】:

我正在实现一个简单的负载平衡器 - 它是一个 http 侦听器,它解析来自浏览器的传入请求并将它们路由到适当的 ASP.NET 应用程序。它侦听某个端口(8801),并在路由时保留原始 URI 并仅更改端口号,例如https://machine.domain.com:8801/testsite/Default.aspx 可以路由到https://machine.domain.com:8811/testsite/Default.aspx

没有安全路由就可以正常工作。当我尝试将 WIF 联合应用于 ASP.NET 应用程序时,问题就出现了。我使用 ADFS 2.0。以下是我尝试过的两种情况:

场景 1

依赖方的 WS-Federation 被动端点设置为 ASP.NET 应用 URI

当通过浏览器访问负载平衡器 URI 时,负载平衡器路由到 ASP.NET 应用程序并加载页面,但是,来自 STS 的 RequestSecurityTokenResponse 被直接重定向到 ASP.NET 应用程序(而不是负载平衡器),根据到被动端点设置。所以它可以工作,但由于我希望通过负载均衡器处理与 ASP.NET 应用程序的整个通信,所以这种情况不符合我的要求。

场景 2

依赖方的 WS-Federation 被动端点设置为负载平衡器 URI

当通过浏览器访问负载均衡器 URI 时,负载均衡器路由到 ASP.NET 应用程序,该应用程序返回未经授权的响应,浏览器重定向到 STS,RequestSecurityTokenResponse 被重定向回负载均衡器,但当进一步路由到 ASP.NET应用程序,我收到 401 的响应 - 未经授权:由于凭据无效,访问被拒绝。这是由于我认为 URI 不匹配,因为 saml 令牌是为负载均衡器 URI 颁发的。我尝试了各种受众 uri 和领域的组合,但没有成功。

所以我的问题是是否存在使负载均衡器能够处理所有必要的联合通信的解决方法,因为我的 ASP.NET 应用程序只能从负载均衡器访问。

我希望我足够清楚地解释了我的问题。

帮助非常感谢 谢谢

【问题讨论】:

    标签: wif adfs federation


    【解决方案1】:

    最终问题出在其他地方。我的负载均衡器实际上所做的是将传入的 HttpListenerRequest 转换为新的 HttpWebRequest,然后将其转发到相应的 ASP.NET 应用程序。但是,我没有禁用转发请求的自动重定向,因此发生了从 ASP.NET 应用程序到 ADFS 的重定向。 这段代码起到了神奇的作用:

    HttpWebRequest.AllowAutoRedirect = false;

    【讨论】:

    • 出于好奇,您将此代码放在解决方案中的什么位置?
    【解决方案2】:

    在您的依赖方应用程序 web.config 中,您能否确认您的 federatedAuthentication 部分看起来像这样(下面的领域应该指定您的 NLB 端口):

    <federatedAuthentication>
        <wsFederation passiveRedirectEnabled="true" issuer="https://mysts.com/v2/wsfederation" realm="https://machine.domain.com:8801/testsite/Default.aspx" requireHttps="false" />
        <cookieHandler requireSsl="false" />
    </federatedAuthentication>
    

    另外,您应该注意的另一个问题是会话 cookie。 WIF 默认使用 DPAPI 对其进行加密,因此您必须改用 RsaEncryptionCookieTransform。在 Azure 中使用 WIF 时也存在同样的问题。这里有一篇文章演示了这是如何完成的:

    http://msdn.microsoft.com/en-us/library/windowsazure/hh289318.aspx

    【讨论】:

    • 干杯伙伴,最后 RsaEncryptionCookieTransform 是不必要的,还是谢谢
    猜你喜欢
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 2022-01-10
    • 1970-01-01
    • 2014-02-04
    相关资源
    最近更新 更多