Asp.net l'authentification de formulaires et de multiples domaines
J'ai deux domaines, domain1.com et domain2.com pointant à la même asp.net site web qui utilise asp.net construire dans le formulaire d'authentification. Le problème est que, même si les domaines pointent vers le même site web, l'utilisateur seulement sont authentifiés pour un seul domaine à la fois. Donc, si il utilise www.domain1.com d'abord et ensuite des visites www.domain2.com c'est le même site dans le dos mais il n'est pas authentifié pour www.domain1.com. La même chose se produit si il utilise www et pas www lors de la visite de ces sites.
C'est ce que j'utilise à la connexion:
FormsAuthentication.RedirectFromLoginPage(username, cookie.Checked);
Pour vérifier la connexion:
User.Identity.IsAuthenticated
Comment puis-je faire, l'utilisateur obtient authentifié pour tous les domaines qui pointe vers le même site web?
- Le cookie d'authentification, comme la plupart des cookies sont stockés par domaine pour éviter de la croix-domaine pollenation et l'usurpation d'identité. Pourquoi voudriez-vous faire cela?
- Parce que parfois vous avez plusieurs sites que l'utilisateur doit être en mesure d'utiliser de façon transparente, sans avoir à se connecter à chacun d'eux séparément.
- Pourquoi ne pas suivre le StackOverflow méthodologie et d'utiliser une authentification externe fournisseur OpenID.
- Vous auriez encore besoin d'un mécanisme pour transférer le billet pour le deuxième domaine, même si vous utilisez OpenID - quand DONC a l'aide de UserVoice.com pour les bug/problème de suivi, j'ai toujours eu à se connecter là, même si j'ai été en utilisant le même fournisseur OpenID sur les deux sites...
Vous devez vous connecter pour publier un commentaire.
Ce que vous êtes après est une solution d'authentification Unique.
Comme ASP.NET l'authentification est au cœur généralement basées sur les cookies, il y a deux choses à regarder:
À la recherche à la fois de ces plus en profondeur:
1. Mettre les cookies correctement
Vous devez vous assurer que ASP.NET l'écriture est le ticket d'authentification des cookies pour le domaine racine, plutôt que de le domaine explicite ce qui est fait à l'aide de la
domain
attribut de l'élément forms:Vous devez définir votre domaine ".example.com" - la tête - c'est la clé. De cette façon, les demandes de example.com et http://www.example.com permettra à la fois de lire le cookie correctement, et d'authentifier l'utilisateur.
2. Rebond des utilisateurs à l'alternative de domaine
Ce que nous avons mis en place sur quelques sites qui utilisent une connexion unique est un tour de processus d'ouverture de session. L'utilisateur s'authentifie sur le premier domaine, nous chiffrer les informations de connexion, et de les rediriger vers une page sur le deuxième domaine, connectez-vous en là, et ensuite rediriger vers le serveur d'origine.
Ce côté client de redirection est important - les cookies sont écrites seulement quand il ya une réponse au client, et le navigateur a visiter le deuxième domaine de réellement voir les cookies.
D'autres aspects à prendre en compte dans ce genre de set-up:
Vous pouvez également jeter un oeil à "L'Authentification De Formulaires À Travers Les Applications"
domain=".example.com"
attribut (remplacé par le nom de domaine du site principal), mais maintenant, l'authentification ne semble pas être un travail à tous. (Déconnexion n'a aucun effet, j'ai même effacé les navigateurs les cookies.) J'avais envisager de payer un raisonnable des honoraires si vous pouviez passer un peu de temps à m'aider.302
redirige comme une réponse qui serait le navigateur à la question de la demande appropriée au serveur suivant dans la chaîne d' - cependant, si je me souviens bien c'était toujours en s'appuyant sur les chaînes de requête - d'où l'utilisation de SSL. Ensuite, nous avons été plus limitée pour le protocole SSL compromis.domain
attribut ne doit pas avoir une période (arrêt complet) en elle. mis àdomain="example.com"
et cela devrait fonctionner.www.example.com
réglage du domaine de cookie sans que la période ne correspond pas à votre hôte et le cookie sera rejeté, dans ce cas, vous devez le régler soitwww.example.com
ou tout simplement.example.com
pour correspondre à tous les sous-domaines.domain
attribut pour le maître de domaine seul, sans l'arrêt complet. Tous les sous-domaines accepter la auth cookie dans cette configuration.Vous pouvez essayer le réglage de
cookieless="true"
.Vous devriez lire Expliqué: L'Authentification Par Formulaires sur MSDN. Ils couvrent la Croix-Authentification de Domaine.