10

Je connais le risque de sécurité associé et j'en ai parlé à l'entreprise, mais ils veulent avoir leurs 5 domaines pour partager le cookie de connexion.Les cookies interdomaines avec FormsAuthentication

Nous utilisons et n'avons pas l'intention d'arrêter d'utiliser l'adhésion et les profils ASP.Net. Est-ce possible? Un hack serait même grandement apprécié.

Répondre

9

Ce n'est pas possible avec ASP.NET prêt à l'emploi.

L'authentification basée sur les formulaires est basée sur un cookie et les cookies ne peuvent être définis que sur un domaine spécifique.

Si vous souhaitez une véritable authentification partagée entre domaines (pas sous-domaines), vous devez disposer d'une solution de connexion unique.

J'ai roulé le mien et c'est relativement simple. Le principe de base est que vous avez un domaine maître qui contient votre cookie d'authentification (ticket). Vous redirigez ensuite vers ce domaine à partir de tous les autres domaines. Ce n'est pas vraiment joli, mais l'événement Microsoft Passport a fonctionné de cette façon.

Vous pouvez trouver beaucoup d'exemples sur le net, jetez un oeil à ces deux liens:

Authentication cookies

Cross domain authentication

+0

Sur ce second lien, si vous avez des difficultés à exécuter la démo parce que «Clé non valide pour une utilisation dans l'état spécifié », essayez ceci: Assurez-vous que le fichier de clé est en train d'être créé là où vous pensez que c'est. Il semble que l'exemple de code inclue un fichier clé, mais bien sûr nous voulons faire le nôtre. Pour enregistrer le fichier de clé (tripleDES.key), j'ai d'abord dû enregistrer la configuration dans l'outil de configuration de la bibliothèque d'entreprise (clic droit, enregistrer). Une fois que j'ai enregistré la configuration, mon fichier de clé a été immédiatement enregistré, et je suis en mesure de lancer l'application de démonstration. – northben

2

Non seulement avec ASP.Net est-ce pas possible, mais pas du tout. Les cookies sont toujours spécifiques à un domaine - aucun navigateur commercial ne fonctionnera autrement. Ceci est par conception et très nécessaire pour éviter un abus généralisé des cookies. Muerte vous a indiqué la bonne direction (authentification unique).

4

Vous pouvez configurer tous ces domaines en tant que sous-domaines pour votre entreprise:

www.company.com 
shop.company.com 
sales.company.com 
research.company.com 
.. 

alors vous serez en mesure de mettre cookie au domaine parent et il sera visible pour tous les sous-domaines.

var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); 
cookie.Domain = ".company.com"; 
Repsonse.Cookies.Add(cookie); 

Cordialement, Max Chernyshov http://prontocoder.com