6

J'essaie de configurer l'authentification unique pour 2 sites Web qui résident sur le même domaineAuthentification unique avec authentification par formulaires

http://mydomain (haut site de niveau qui contient une forme-auth page de connexion)

http://mydomain/admin (site séparement développé résidant dans une application virtuelle dans le site parent)

ont lu quelques articles sur Single Sign On par exemple

http://www.codeproject.com/KB/aspnet/SingleSignon.aspx

http://msdn.microsoft.com/en-us/library/dd577079.aspx

Et ils semblent le suggérer est juste un cas d'avoir la même section machinekey dans chaque web.config afin que le chiffrement et le déchiffrement des cookies est le même pour chaque application

Je l'ai mis en place et je n'ai jamais été invité pour les informations d'identification dans le sous-site Web (l'application virtuelle)

Je reçois toujours un message dans le site parent.

En plus d'avoir la même machinekey j'ai aussi essayé d'ajouter les mêmes <authentication> et <authorisation> éléments

Toute idée de ce que je pourrais être absent?

+0

Un succès avec cette question? – AlfeG

Répondre

1

Je l'avais utilisé <clear/> sur la section httpModules, car il y avait des éléments dans le parent qui n'existait pas dans la poubelle dir pour l'enfant (/ admin)

Pour ce faire (en utilisant <clear/> qui est) que j'avais par inadvertance effacé le module FormsAuthentication spécifié dans le web.config dans C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ cONFIG

donc je devais ajouter à nouveau ceux qui sont explicitement à la configuration enfant (/ admin)

+0

J'essaie de faire quelque chose de similaire. Peut-on avoir des formulaires AuthN et SSO pour le même site? Peut-être avoir deux pages de démarrage différentes, mais web.config unique? Des commentaires, des suggestions? – VoodooChild

0

Essayez de configurer la section httpCookies dans le fichier web.config des deux applications pour utiliser le même domaine. De cette façon, lorsque vous vous connectez à une application, le cookie FormsAuthentication que vous obtenez sera visible par l'autre application.

+0

merci pour la suggestion - malheureusement cela n'a fait aucune différence – ChrisCa

1

Votre section de formulaires de web.config doit également être la même.

Quote from - Forms Authentication Across Applications

Pour configurer l'authentification des formulaires dans toutes les applications, vous définissez les attributs des formes et des sections machineKey du fichier web.config aux mêmes valeurs pour toutes les applications qui participent à l'authentification des formes partagées. L'exemple suivant montre la section Authentification d'un fichier Web.config . Sauf indication contraire, les attributs de décryptage de nom, de protection, de chemin, de validationKey, de validation , de decryptionKey et de doivent être identiques à toutes les applications. De même, le chiffrement et les valeurs de clé de validation et le schéma de chiffrement et le schéma de validation utilisé pour les tickets d'authentification (données de cookie) doivent être les mêmes. Si les paramètres ne correspondent pas, les tickets d'authentification ne peuvent pas être partagés.

+0

merci - comme je l'ai dit plus tôt, j'ai essayé avec les mêmes sections d'authentification et d'autorisation OPne interseting chose que j'ai remarqué est que lorsque j'utilise un chemin qualifié complet pour le loginURL par exemple "http: //mondomaine/login.aspx" Je suis invité à entrer les informations d'identification Windows (pas la page de connexion des formulaires) – ChrisCa

+0

Je veux juste m'assurer que je comprends bien. Si vous vous connectez à Mydomain vous devriez être authentifié pour Mydomain/admin et cela fonctionne très bien. Et vous voulez que ça marche dans l'autre sens? c'est-à-dire lorsque vous vous connectez à admin votre authentification pour Mydomain? Avez-vous regardé votre code d'authentification dans MyDomain? Est-ce que cela diffère en quelque sorte de/admin? –

+0

Non. Lorsque je visite mydomain, qui contient la page de connexion, j'aimerais être authentifié pour mydomain et aussi mydomain/admin. Quand je visite http: // mydomain, je suis redirigé vers la page de connexion - ce que je veux arriver. Lorsque je visite http: // mydomain/admin, je ne suis pas redirigé - j'ai un accès complet au site/admin. c'est-à-dire qu'il ne récupère pas l'authentification du parent – ChrisCa

0

Vous devez disposer des mêmes éléments d'authentification dans le fichier web.config. Dans l'élément forms, assurez-vous de donner à chaque application la même valeur pour l'attribut name. Pour l'attribut loginUrl, j'utilise un chemin relatif et utilise la même page d'ouverture de session pour toutes les applications (par ex.loginUrl = "/ MainApp/login.aspx").

De même, créez-vous le ticket d'authentification manuellement?

+0

oui, j'ai essayé avec un chemin local (login.aspx) dans le parent, et un chemin complet (mydomain/login.aspx) dans/admin, mais je ne suis jamais redirigé vers le page de connexion sur/admin. Si je mets un chemin complet dans les deux, je reçois une invite de connexion Windows (pas de connexion à une page de formulaire). avez essayé tous les paramètres de sécurité dans IIS mais ne pouvez pas être redirigé vers la page de connexion sur le site enfant – ChrisCa

+0

Essayez-vous d'afficher la page d'ouverture de session même lorsque l'utilisateur s'est déjà connecté au site non administrateur? En outre, mettez-vous la section restreindre des utilisateurs dans l'élément d'autorisation? –

Questions connexes