ASP.NET l'Identité Cookie à travers les sous-domaines
Pour l'authentification par formulaires, j'ai utilisé ce dans le web.config (notez le domaine de l'attribut):
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" name=".ASPXAUTH" protection="Validation" path="/" domain=".myserver.dev" />
</authentication>
Comment est un single sign-on à travers les sous-domaines configurés pour la nouvelle ASP.NET l'Identité Framework Mvc 5?
Plus D'Infos:
Je suis entrain de créer une nouvelle application. Chaque client sera sur un sous-domaine:
client1.myapp.com
client2.myapp.com
Je veux un utilisateur d'être en mesure de vous connecter à client1.myapp.com
et puis aller à client2.myapp.com
et encore être signé. C'était facile avec l'authentification par formulaires. Je suis à essayer de comprendre comment le faire avec la nouvelle Identité de Cadre.
MODIFIER
Voici le code qui a finalement fonctionné pour moi:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Application",
LoginPath = "/Account/Login",
CookieDomain = ".myapp.com"
});
- Avez-vous une application pour tous les sous-domaines ou une application pour chaque sous-domaine? J'ai la deuxième option, et il ne fonctionne pas 🙁
- Peut-on accéder à
CookieAuthenticationOptions
à partir d'autres endroits de l'Application? I. e. pouvons-nous changer dansHomeController
pour définir Délai d'expiration de Session? - Je voulais juste savoir si vous l'essayez sur localhost il peut ne pas fonctionner. Je passe deux heures à indetify pourquoi il n'a pas de travail mais je ne pouvais pas. Et puis je veux juste essayer cette réponse sur le serveur et il a travaillé.
Vous devez vous connecter pour publier un commentaire.
En Démarrage.Auth.cs, vous verrez quelque chose comme:
pour RC:
Cela a été supprimé dans la version d'origine et la remplacer par la configuration explicite du cookie d'authentification:
La CookieAuthenticationOptions classe a un CookieDomain la propriété, qui est ce que vous cherchez, je crois.
Cela a été me rend fou jusqu'à ce que j'ai appris que l'Identité 2.0 dépend toujours de la machine clé pour chiffrer le cookie d'Authentification. Donc, si vous voulez les deux instances de la même application sur différents sous-domaines, alors vous devez définir la même clé d'ordinateur pour chaque application.
Donc en résumé:
Jeu de machine identique clés dans chaque application web de config
Cette réponse m'a conduit à la définition des valeurs:
N'ASP.NET Identité 2 utilisez machinekey de hacher le mot de passe?
Vous devez configurer dans le web.config de la même machineKey pour TOUS les sites/applications.
Tous les sites web DOIVENT AVOIR au moins cette configuration.
http://msdn.microsoft.com/en-us/library/w8h3skw9(v=vs. 85).aspx
C'est un exemple
Dans le Démarrage.Auth.cs fichier, ajouter le
CookieDomain
paramètre avec votre nom de domaine:Alors pour tous les sites web, vous devez configurer une machine unique clé. La façon la plus simple pour générer un nouveau à l'aide de IIS:
Trouver la "Clé Machine" sur votre site:
Cliquez sur le bouton "Générer les Clés" bouton pour obtenir vos clés.
Enfin, le processus ci-dessus permettra d'ajouter les éléments suivants à votre
web.config
et vous devez vous assurer que c'est copié dans chacun de vos sites.