メインの IIS 7 サイト (local.mysite.com) とその下の VirtualDirectory (local.mysite.com/vdir) の間に SSO を実装しようとしています。
同じ MachineKey 設定と認証セクションを使用するように両方の web.config をセットアップしました。
<authentication mode="Forms">
<forms name="myCookie" loginUrl="login.aspx" protection="All" path="/" enableCrossAppRedirects="true" domain=".mysite.com"/>
</authentication>
<machineKey validationKey="123" decryptionKey="456" validation="SHA1" decryption="AES"/>
現在、メインサイトでログインが機能しています。次のようなコードを使用して、独自の認証 Cookie を作成しています。
var ticket = new FormsAuthenticationTicket(1, state.Email, DateTime.Now, expiresDate, true, state.ToString());
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket) { Domain = FormsAuthentication.CookieDomain };
response.Cookies.Add(cookie);
ただし、ログイン後に仮想ディレクトリにアクセスするたびに、ユーザーは認証されません。FireBug を使用すると、Cookie がリクエストで送信されていることがわかりますが、コード ビハインドではアクセスできません。ただし、VirtualDirectories web.config からエントリを削除すると、Requests Cookie コレクションに「myCookie」Cookie が表示されます。
これがなぜなのかわかりません。誰かがそれに光を当てることができますか?IIS での VirtualDirectories の操作にあまり慣れていないため、不足している可能性があります。