IIS7.5 で asp.net 2.0 を実行している 2 つの Web サイトが 1 つのサーバー上にあり、フォーム認証で保護されています。
URL は次のようなものです。
https://customerx.mydomain.com/site1/
https://customerx.mydomain.com/site2/
両方の Web サイトは同じ Web アプリケーションを実行していますが、異なるフォルダーにあり、異なるデータベースに接続されています。2 つのサイトはSSO (シングル サインオン)用に準備されています。ユーザーはsite1 のログイン ページを開き、自分の資格情報 (フォーム認証、メンバーシップ プロバイダー) で認証します。開始ページにはsite2へのハイパーリンクがあり、site2 の開始ページには site1 へのリンクがあります。したがって、ユーザーはあるサイトから別のサイトにジャンプできます。
SSO は、両方のアプリケーションで次の web.config エントリで解決されました (同じ Cookie 名とマシン キー):
<authentication mode="Forms">
<forms loginUrl="~/login.aspx" defaultUrl="~/default.aspx"
timeout="60" name=".customerxcookie" />
</authentication>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
<machineKey validationKey="...myvalidationkey..." validation="SHA1" />
各ユーザーには、サイト上のデータを多かれ少なかれ表示するためのいくつかのユーザー権限があります。ユーザー権限を持つユーザー データは、両方のサイトで同じです。
サイト 1 で管理者としてログインし、サイト 2 などにジャンプしてログアウトすると、1 つのサイトからのみログアウトするため、再度ログインせずにサイトの 1 つを開くことはできません。問題はない。ログアウトに LoginStatus コントロールを使用しています。
protected void LoginStatus1_LoggedOut( object sender, EventArgs e )
{
FormsAuthentication.SignOut();
Session.Abandon();
}
ここでの問題:管理者のログアウト後 、site1 でより少ない権限を持つユーザー資格情報でログインした場合: site1 では問題ありませんが、site2 にジャンプすると、期待どおりにユーザー名が表示されますが、彼は管理者からのすべての権限を持っています。ユーザー権限で許可されていないすべてのものを見ることができます。
2 つの Cookie (firefox) があることがわかりました。
customerx.mydomain.com customerxcookie
customerx.mydomain.com .ASPXANONYMOUS
Cookie customerxcookieを削除すると、次のログインは正常に機能します。しかし、ユーザーを変更するたびにそれを行う必要があります。
助言がありますか?