0

2つのサブドメインでユーザーにログインしようとしています。

次のサブドメインを検討してください。

forum.mydomain.com、account_a.mydomain.com、account_b.mydomain.com。

ユーザーがaccount_a.mydomain.comにログインします。私の認証機能で、forum.mydomain.comの認証Cookieを作成したいと思います。(ただし、account_b.mydomain.comの場合は(!)ではありません)

Cookieを作成し、.domainプロパティをforum.mydomain.comに設定しようとしましたが、どういうわけかCookieが作成されません。account_aとaccount_bは完全に異なる2つのユーザーであるため、セキュリティの問題が発生するため、.domainプロパティを.mydomain.comに設定することは私が望むものではありません。

どうすれば動作させることができますか?

4

2 に答える 2

2

Cookieの設定だけでこれを解決することはできません。ドメインプロパティの目的はこれを防ぐことです。

forum.mydomain.comとaccount_a.mydomain.comの両方が絶対に同じ認証Cookieを使用する必要がある場合は、それを.mydomain.comに設定し、account_b.mydomain.comで無効であることを確認するロジックを用意する必要があります。

于 2012-10-12T11:38:24.657 に答える
1

特定のドメイン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

于 2012-10-12T11:29:20.690 に答える