特定のドメインCookieを作成できるのは、作成しているドメインで解決するマシンだけです。と呼ばれるCookieを作成する場合はaccount_a.mydomain.com
、その特定のドメインからサーバーのURLにアクセスする必要があります。このため、完全に別個のアドレスであるため、にaccount_a.mydomain.com
固有のCookieを作成することはできません。forum.mydomain.com
このようなCookieを作成しようとすると、実際にはのCookieが作成されaccount_a.forum.mydomain.com
ます。
それを機能させる方法については、そもそもなぜこのようにCookieをいじくり回しているのか、はっきりとはわからないので、言うのは難しいです。ブラウザごとにユーザーに対して有効な認証Cookieを1つだけ持つことができ、Cookieはブラウザのすべてのインスタンスに共通であるため、account_aのCookieをaccount_bに対して検証することは実際には不可能であり、2つのCookieはできませんでした。とにかく同じマシンに住んでいます。ドメインレベル認証の目的の1つは、この種の同時多重度を防ぐことです。
編集:( コメントへの応答)
ユーザーが複数のドメインサーバーに移動できるようにするシナリオでは、Cookie自体に触れる必要はありません。自動的にmydomain.com
ドメインにバインドされ、そのようなトラバーサルが可能になります。個々のシステムレベルのセキュリティメカニズムをグローバルオブジェクトに適用しようとすると、少し逆行します。例えを使用すると、誰かを地下室から遠ざけるために、家の周りの柵に有刺鉄線を並べることはありません。account_a
ドメインへのアクセスを防ぐための認証制御はaccount_b
、そのサーバーレベルで適用する必要があります。私の推測では、ドメインが認証に対して合理化されている何らかの形式の共通コードがあるので、実際に行う必要があるのは実際の承認を処理することです。
1つの方法は、PageベースクラスのInitイベントまたはLoadイベントにカスタムコードを追加することです。BeginRequest
また、 global.asaxのイベントにロジックを追加することもできます。私が使用したことのあるテクニックの1つは(自分で使用したことはありませんが)、global.asaxのAuthorizeRequestイベントに追加することです。トピックを説明しているドキュメントは見つかりませんでしたが、その方法の例を示すドキュメントは見つかりました。https://nport.svn.codeplex.com/svn/jacky/ccs/CCWeb/Global.asax.cs