5

複数のサーバーとサブドメインでフォーム認証を設定しようとしています。次のように、アプリケーションごとに静的マシン キーを設定しています。

<system.web>
    <machineKey validationKey="574...7A7" 
                decryptionKey="2C3...A0D" 
                validation="HMACSHA256" 
                decryption="AES" />
</system.web>

...そして、フォーム認証は各アプリケーションで同じように構成されています:

<forms loginUrl="/login" timeout="2880" defaultUrl="/" path="/" name=".SHAREDAUTH" domain="domain.com" protection="All" />

一部の人が示唆しているように、ドメインの前にピリオドを付けてみましたが、それもうまくいきませんでした。

これは、サブドメインごとに IIS で個別のサイトが設定されているローカル マシンで正常に動作します。また、すべてのサイトが 1 台のマシン上に存在する開発サーバーでも問題なく動作します。しかし、ステージング環境にデプロイすると、クロスドメイン認証が機能しなくなります。その環境では、プライマリ サイト (ログインが発生する場所) を 1 台のサーバーで実行し、セカンダリ サイト (認証を維持する必要がある場所) を 2 つの負荷分散サーバーで実行しています。すべてが Windows 7 (ローカル) または Server 2008 R2 (開発およびステージング) の IIS 7 で実行されています。

プライマリ サイトで文字列をエンコードMachineKey.Encodeし、セカンダリ サーバーで結果をデコードして、マシン キーが同じであるMachineKey.Decode.ことを確認しましたFirefox と Chrome によって報告されたヘッダーと、デバッガーをフックするApplication_BeginRequestと、実行Application_AuthenticateRequest.中に Cookie が表示されますが、呼び出されると消えてしまいます。私が収集できることから、それは認証チケットの逆シリアル化が失敗したことを意味しているようですが、異なるマシンキーは別として、マルチサーバー環境では発生する可能性があり、単一サーバー環境では発生しない理由がわかりません、私がすでに確認したことはそうではありませんでした。Application_BeginRequestApplication_AuthenticateRequest

また、カスタムの MembershipProvider と RoleProvider をセットアップしましたが、これらは各サイトで独立して正常に動作します。

私は何が欠けていますか?

4

2 に答える 2

3

そこで、長いスローガンの後で、フォーム認証における特権の昇格の脆弱性にパッチを適用するMSセキュリティ情報MS11-100を発見しました。残念ながら、パッチには下位互換性がありません。これは負荷分散サーバーに適用されましたが、最初のログインを作成したアプリケーションをホストしているサーバーには適用されませんでした。つまり、分散サーバーはアプリサーバーによって書き込まれた認証チケットを逆シリアル化できませんでした。

MS導入ガイダンスの記事によると、このような状況に陥った場合は、次のように追加できます。

<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />

パッチがインストールされているマシン上のアプリケーションのweb.configのappSettingsセクション(またはマシンレベルの構成)に移動します。または、さらに良いことに、ホスティング管理会社がすべてのサーバーに同時にパッチを適用していることを確認してください...

于 2012-02-16T22:46:09.017 に答える
0

私にとっては、appsettingsにこのキーを追加することで機能します。

    <add key="aspnet:UseLegacyEncryption" value="true" />
    <add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
于 2012-10-31T12:03:43.867 に答える