ASP.NET Identity Cookie à travers les sous-domaines

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é:

  1. CookieDomain = “.myapp.com”
  2. 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:

entrer la description de l'image ici

Cliquez sur le bouton “Générer des clés” pour obtenir vos clés.

entrer la description de l'image ici

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.