4

2 つの .NET C# プロジェクトがあります。これらは、同じドメイン (domain.com など) の下に展開されます。

1 つのプロジェクトも数年で作成されました。.NET 4.0 を使用しています。MAIN_1 としましょう。このプロジェクトは、さらに古い (.NET 3.5) 別の外部プロジェクトを使用してユーザーを認証します。AUTH_PROJ としましょう。VS2012 で MVC4 と .NET 4.5 を使用して新しいプロジェクトを作成しています。MAIN_2 としましょう。MAIN_1 と MAIN_2 は同じドメイン (例: domain.com) に展開されます。私の目標は、ユーザーが MAIN_1 にログインし、MAIN_2 でも認証されるようにすることです。オンラインで検索したところ、この投稿http://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applicが非常に興味深く、便利であることがわかりました。Visual Studio 2012 Professional でいくつかの単純な MVC プロジェクトを作成して、シングル サインオンをテストしました。

  1. プロジェクト 1: .NET4.5 MVC4 インターネット プロジェクト。=> ウェブサイト 1
  2. プロジェクト 2: プロジェクト 1 と同じ。 => Web サイト 2
  3. プロジェクト 3: .NET 4 MVC3 インターネット プロジェクト。=> ウェブサイト 3
  4. プロジェクト 4: プロジェクト 2 と同じ。 => Web サイト 4

この 4 つのプロジェクトでは、同じマシン キーを追加し、Web.config ファイルのフォーム認証に domain="localhost" を追加しました。

次に、シングルサインオンをテストしました。Web サイト 1 でアカウントを作成し、ログインしました。Web サイト 2 を開いたところ、すでにログインしています。Web サイト 3 と 4 も同様です。

しかし、異なるフレームワークを混在させると、何も機能しません。

firebug でブラウザの Cookie を確認しました。.ASPXAUTH Cookie はそこに残ります。しかし、Cookie がプロジェクト 1 によって作成され、プロジェクト 3 をデバッグすると、.ASPXAUTH Cookie を除くすべての Cookie を取得できます。.ASPXAUTH はフレームワークに依存しているようで、Firefox では表示されますが、他のフレームワーク プロジェクトでは表示されません。

.ASPXAUTH Cookie が C# コードで非表示になる理由と、シングル サインオンを機能させる他の方法はありますか? ありがとうございました

4

2 に答える 2

3

4.5プロジェクトでは、Web.configで次の構成スイッチを設定してみてください。

<machineKey compatibilityMode="Framework20SP1" />

4.5と4.0は、フォーム認証チケットに異なる暗号化ルーチンを使用します。4.5プロジェクトで上記のスイッチを設定すると、4.0と同じルーチンを使用するように強制されます。詳細については、 http://blogs.msdn.com/b/webdev/archive/2012/10/23/cryptographic-improvements-in-asp-net-4-5-pt-2.aspxを参照してください。

于 2013-01-18T09:08:33.947 に答える
0

しかし、異なるフレームワークを混在させると、何も機能しません

それは正常です。発見されたセキュリティの脆弱性により、.NET バージョン間で暗号化ルーチンに変更がありました。そのため、 を使用してサーバーにパッチを適用することをお勧めしますfollowing update

何らかの理由でそれができない場合は、推奨されない回避策があります。

<appSettings>
    <add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
    <add key="aspnet:UseLegacyEncryption" value="true" />
    <add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />
</appSettings>
于 2013-01-18T06:29:10.760 に答える