Web 场方案中的信赖方 (IsSessionMode = true)



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

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

1) 订阅服务配置创建事件

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 的无限重定向

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

问题出在哪里?我错过了什么?

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

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

您可以尝试一些实验:

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

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

最新更新