【问题标题】:Relying Party in a web farm scenario (IsSessionMode = true)Web 场方案中的依赖方 (IsSessionMode = true)
【发布时间】:2012-06-04 12:04:49
【问题描述】:

首先,我必须设置 IsSessionMode = true 以减小 cookie 大小

我需要平衡 2 个 RP 实例 我在 2 台带有 RP 实例的不同机器上执行了以下步骤:

1) 订阅了 ServiceConfigurationCreated 事件

private void WSFederationAuthenticationModule_ServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
    {
        X509Certificate2 certificate = CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, ConfigHelper.FrontendCertificate);

        var sessionTransforms = new List<CookieTransform>(new CookieTransform[] 
        { 
            new DeflateCookieTransform(), 
            new RsaEncryptionCookieTransform(certificate),
            new RsaSignatureCookieTransform(certificate)
        });

        SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());
        e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
    }

2) 带走会话到 asp.net 状态服务

问题:

当我尝试登录 STS 时,我得到从 RP 到 STS 的无限重定向

我不明白为什么。令牌存储在 session(IsSessionMode = true) 中。会话由 asp.net 状态服务在 2 个不同的主机之间共享。

有什么问题?我错过了什么?

我想我不明白一些重要的事情。

【问题讨论】:

    标签: asp.net wif geneva-framework


    【解决方案1】:

    我最好的猜测是 WIF 只是无法在 RP 端建立会话,并且用户登陆了未经授权的页面(可能是自定义错误页面?),这会提示 WIF 重定向回 STS 进行身份验证,现在你正在循环播放。

    您可以尝试一些实验:

    1. 关闭IsSessionMode = false,看看问题是否依然存在。如果没有,那么您知道 WIF 在创建会话时阻塞,您可以检查以确保您的 RP 成功联系 ASP.NET 状态服务。

    2. 安装 Fiddler (http://fiddler2.com/fiddler2/),它是调试此类无限重定向的宝贵工具。收集一些痕迹,看看发生了什么。您也可以考虑发布您的 RP web.config。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多