0

まず、IsSessionMode = trueを設定して Cookie のサイズを小さくする必要がありました

2 つの RP インスタンスのバランスをとる必要があります。RP インスタンスを持つ 2 つの異なるマシンで次の手順を実行しました。

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 への無限のリダイレクトが発生します

理由がわかりません。トークンはセッションに保存されます(IsSessionMode = true)。セッションは、asp.net 状態サービスによって 2 つの異なるホスト間で共有されます。

何が問題ですか?私は何を取りこぼしたか?

私は何か重要なことを理解していないと思います。

4

1 に答える 1

0

私の推測では、WIF が RP 側でセッションを確立できず、ユーザーが承認されていないページ (カスタム エラー ページでしょうか?) にアクセスしたため、WIF は認証のために STS にリダイレクトするように促されたのではないでしょうか。ループしています。

あなたが試すかもしれないいくつかの実験:

  1. IsSessionMode = false をオフにして、問題が引き続き発生するかどうかを確認します。そうでない場合は、WIF がセッションの作成を停止していることがわかります。たとえば、RP が ASP.NET 状態サービスに正常に接続していることを確認できます。

  2. このような無限リダイレクトをデバッグするための貴重なツールである Fiddler (http://fiddler2.com/fiddler2/) をインストールします。いくつかの痕跡を収集し、何が起こっているかを確認してください。RP web.config を投稿することも検討してください。

于 2012-06-05T15:25:42.287 に答える