わかりました、それで、私はそれをより長く打ち負かした後、自分の質問に答えることができました.
基本的に、BlogEngine.NET 2.5 (私の Web アプリ) は、.NET 4.0 フレームワークのやり方をオーバーライドしているようです。修正が必要な点がいくつかあります。すべて、BlogEngine.Core\Security\Security.cs内にあります (BlogEngine.NET ソース コードをダウンロードしてください)。
パート 1: Cookie 名を修正する
次のように変更した FormsAuthCookieName メソッドがあります。
File: BlogEngine.Core\Security\Security.cs
Method: FormsAuthCookieName()
// return FormsAuthentication.FormsCookieName + "-" + Blog.CurrentInstance.Id.ToString();
return FormsAuthentication.FormsCookieName;
これにより、Cookie名が同じになります。1つのハードルダウン...
パート 2: web-app/BlogEngine.NET のログイン ページ/コントロール/コードを避ける
ユーザーが BlogEngine.Net の login.aspx (www.website.com\blog\account\login.aspx) にログインするように指示する代わりに、すべてのログイン リンクをメイン Web サイトの login.aspx ページ (www.website.com\login)に向けました。 .aspx)。独自のサイト全体の認証を実装する方法を知りたい場合は、これが超簡単なガイドです
msdn.microsoft.com/en-us/library/ff184050.aspx.
また、このようなものを Web サイト web.config と Web アプリ web.config の両方に追加する必要があったため、保護されたリソースに (Web サイトまたは Web アプリから) アクセスするたびに、独自のグローバル /login/aspx が使用されます。
<authentication mode="Forms">
<forms timeout="30" loginUrl="/login.aspx" blah blah />
</authentication>
ここで、私自身の汎用的なサイト全体のユーザー ログイン コントロールが、(.NET フレームワーク標準) 認証 Cookie と (ユーザー) ロール Cookie を作成します。BlogEngine.NET の login.aspx を回避することで、クリーンになり、問題のあるこのコードの呼び出しを回避できます。
File: BlogEngine.Core\Security\Security.cs
Method: AuthenticateUser(string username, string password, bool rememberMe)
詳細:このコードは「ブログ インスタンス」を Cookie に追加するため、同じドメインに複数のブログがある場合、ブログ インスタンス 1 で認証された user1 がブログ インスタンス 2 で自動的に認証されないようにします。ドメイン (www.domain.com\blog!) ごとに 1 つのブログしか持たないため、これは不要です。さらに重要なことは、このチェックによってシングル サインオンが中断されることです。
2つのハードルを下...
パート 3: アクセスごとの承認チェックを修正する
現在、サイト全体で標準化されている login.aspx は、特定の BlogEngine.NET インスタンス ID を追加しません (上記を参照)。特にそれを探す BlogEngine.NET コードがまだいくつかあることを除いて、これは問題ありませんでした。そのチェックも必要ないので、問題のあるチェックを削除しましょう...
File: BlogEngine.Core\Security\Security.cs
Method: void Init(HttpApplication context)
// Comment line below to revert to only-framework/default processing
//context.AuthenticateRequest += ContextAuthenticateRequest;
したがって、この時点であなたは持っているべきです
- 単一のサイト全体の login.aspx によって処理されるすべてのログイン
- 上記のサイト全体の login.aspx によって作成されたすべての認証 Cookieとユーザー ロール Cookie
- このようなすべての Cookie は、Web サイトと Web アプリの両方の web.configs (一致する必要があります!) ごとに暗号化および保護されます。
これにより、シングルサインオンが可能になります:) !! 万歳!