Pour l’authentification par formulaires, j’ai utilisé ceci dans web.config (notez l’atsortingbut domain):
Comment une connexion unique entre les sous-domaines est-elle configurée pour le nouvel Identity Framework ASP.NET dans Mvc 5?
Plus d’informations:
Je crée une application multi-locataire. Chaque client sera sur un sous-domaine:
client1.myapp.com
client2.myapp.com
Je veux qu’un utilisateur puisse se connecter à client1.myapp.com
, puis accéder à client2.myapp.com
et être toujours connecté. Cela a été facile avec l’authentification par formulaire. J’essaie de comprendre comment le faire avec le nouveau Identity Framework.
MODIFIER
Voici le code qui a finalement fonctionné pour moi:
app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = "Application", LoginPath = "/Account/Login", CookieDomain = ".myapp.com" });
Dans Startup.Auth.cs, vous verrez quelque chose comme:
pour RC:
app.UseSignInCookies();
Cela a été supprimé dans RTM et remplacé par la configuration explicite de l’authentification par cookie:
app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathSsortingng("/Account/Login") });
La classe CookieAuthenticationOptions a une propriété CookieDomain, ce que vous recherchez, je crois.
Cela m’a rendu fou jusqu’à ce que j’apprenne qu’Identity 2.0 dépend toujours de la clé de l’ordinateur pour chiffrer le cookie d’authentification. Donc, si vous voulez deux instances de la même application sur différents sous-domaines, vous devez définir la même clé d’ordinateur pour chaque application.
Donc en résumé:
Définir des clés d’ordinateur identiques dans la configuration Web de chaque application
Cette réponse m’a amené à définir les valeurs: ASP.NET Identity 2 utilise-t-il la machinekey pour hacher le mot de passe?
Vous devez configurer dans web.config la même machineKey pour TOUS les sites Web / applications.
Tous les sites Web DOIVENT avoir au moins cette configuration.
http://msdn.microsoft.com/en-us/library/w8h3skw9(v=vs.85).aspx
Ceci est un exemple
Dans le fichier Startup.Auth.cs, ajoutez le paramètre CookieDomain
à votre domaine:
var cookieAuthenticationOptions = new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathSsortingng("/Account/Login"), CookieDomain = ".mydomain.com" };
Ensuite, pour tous les sites Web, vous devez définir une clé d’ordinateur unique. Le moyen le plus simple d’en générer un nouveau est d’utiliser IIS:
Trouvez l’option “Machine Key” sur votre site:
Cliquez sur le bouton “Générer des clés” pour obtenir vos clés.
Enfin, le processus ci-dessus appenda ce qui suit à votre web.config
et vous devez vous assurer qu’il est copié dans chacun de vos sites.