J'ai 2 sites Web, le premier est myFirst.domain.com
et le second est mySecondSite.domain.com
. Ils restent sur deux serveurs Web différents et mon but est de permettre l'authentification intersite (mon besoin réel est partagé FormsAuthentication
Cookie).AuthenticationForm - Cross Site Cookies
J'ai correctement configuré mon fichier web.config
(noeud de clé machine, noeud de formulaire). La seule différence est à propos de loginUrl où sur myFirstSite apparaît comme ~/login.aspx
, et sur mySecondSite il apparaît comme http://myFirstSite.com/login.aspx
.
Notez que je n'ai pas de répertoire virtuel, j'ai seulement 2 applications web différentes. Le problème: lorsque j'atteins la page de connexion myFirstSite de mySecondSite, je ne suis jamais redirigé depuis la page de connexion, il semble qu'un cookie ne soit pas écrit.
Voici quelques extraits sur la question:
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>
code monPremierSite derrière:
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>
Eh bien, c'est une ll. Malheureusement, cela ne fonctionne pas.
S'il vous plaît, ne faites pas attention à queryStringToIndicateUrlPage
, c'est seulement une solution de contournement simple afin de savoir si je dois rediriger sur la même application ou sur l'autre.
J'ai déjà essayé en spécifiant le nom de domaine, mais cela ne fonctionne pas de toute façon. – bit
@bit: Votre exemple de code utilise authCookie.Domain = "myDomain.com", il devrait être ".myDomain.com". Avez-vous essayé cela? – Ruben
Oui, je l'ai fait. J'ai essayé aussi beaucoup d'autres solutions sans la chance .. Il semble impossible à réaliser. – bit