私は2つのWebサイトを持っています。最初のサイトはmyFirst.domain.com
で、2番目のWebサイトはですmySecondSite.domain.com
。
それらは2つの異なるWebサーバーにとどまり、私の目標はクロスサイト認証を許可することです(私の本当の必要性は共有FormsAuthentication
Cookieです)。
web.config
ファイル(マシンキーノード、フォームノード)を正しく設定しました。唯一の違いは、myFirstSiteではのよう~/login.aspx
に表示されるloginUrlと、mySecondSiteではのように表示されるloginUrlについてhttp://myFirstSite.com/login.aspx
です。
仮想ディレクトリを持っていないことに注意してください。2つの異なるWebアプリしかありません。
問題:mySecondSiteからmyFirstSiteログインページにアクセスすると、ログインページからリダイレクトされないので、Cookieが書き込まれていないようです。
以下は、この問題に関するいくつかのスニペットです。
MyFirsSite:
<machineKey validationKey="..." decryptionKey="..." validation="SHA1" decryption="AES" />
<authentication mode="Forms">
<forms loginUrl="login.aspx" name="authCookie" enableCrossAppRedirects="true"></forms>
</authentication>
<authorization>
<deny users="?" />
<allow users="*"/>
</authorization>
MyFirstSiteコードビハインド:
FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, "userName..", DateTime.Now, DateTime.Now.AddMinutes(30), true, "roles..");
string ticket = FormsAuthentication.Encrypt(fat);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, ticket);
authCookie.Expires = fat.Expiration;
authCookie.Domain = "myDomain.com";
Response.Cookies.Add(authCookie);
//Here is other stuff about querystring checking in order to execute exact redirect, however it's not working, I always return to the login page.
MySecondSite:
<machineKey validationKey="..." decryptionKey="..." validation="SHA1" decryption="AES"/>
<authentication mode="Forms">
<forms loginUrl="http://myFirstSite.domain.com/login.aspx?queryStringToIndicateUrlPage" enableCrossAppRedirects="true"></forms>
</authentication>
<authorization>
まあ、それだけです。残念ながら、それは機能しません。
注意しないでくださいqueryStringToIndicateUrlPage
。同じアプリにリダイレクトする必要があるのか、別のアプリにリダイレクトする必要があるのかを知るための簡単な回避策にすぎません。