2010-03-15 5 views
4

J'ai un site d'administration configuré en tant qu'application virtuelle à l'intérieur d'un autre site Web.L'authentification par formulaires est ignorée dans l'application virtuelle

Je voudrais les visiteurs du sous-répertoire (l'application virtuelle) à promtped des informations d'identification en utilisant la même authentification des formulaires mis en place sur le site principal parent

ont essayé toutes sortes de choses, mais ne peut l'obtenir au travail, y compris

Suppression de tous les <authentication mode="Forms">, <authorization>, <membership> et <roles> sections du web.config virtuel app

Copie du même <authentication mode="Forms">, <authorization>, <membership> et <roles> sections du parent à la web.config virtuelle app

L'utilisation d'un répertoire virtuel au lieu d'application virtuelle

Mais je ne me promted des informations d'identification

Quelqu'un sait comment obtenir cette configuration?

grâce

MISE À JOUR:

avons maintenant obtenu hériter des autorisations du parent, en supprimant le nom de l'application dans IIS (pour en faire un répertoire virtuel plutôt que d'une application virtuelle)

Cependant, cela vis tous les chemins dans le site d'administration

par exemple Je reçois l'erreur suivante

Le fichier '/ Site.master' n'existe pas.

Alors devrais-je utiliser un répertoire virtuel (qui semble hériter de l'authentification du parent)?

Ou une application virtuelle (qui n'hérite pas actuellement d'auth du parent mais a les chemins relatifs corrects)?

Voici la config mère

<membership defaultProvider="SqlServerMembershipProvider"> 
      <providers> 
       <add connectionStringName="xxxxxxxx" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" name="SqlServerMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
      </providers> 
     </membership> 
     <roleManager enabled="true" defaultProvider="SqlServerRoleProvider"> 
      <providers> 
       <add connectionStringName="xxxxxxx" applicationName="/" name="SqlServerRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
      </providers> 
     </roleManager> 

     <authentication mode="Forms"> 
      <forms name=".EPiServerLogin" loginUrl="login.aspx" timeout="120"/> 
     </authentication> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 

Répondre

1

je devais utiliser un seul signe sur la solution, comme décrit ici

Le principal point de l'être, chaque site doit utiliser la même clé de cryptage pour les valeurs de cookie. Donc cet élément machineKey doit être ajouté à chaque site impliqué dans le Single Sign On

+0

Bah, et je mentionne habituellement la machinekey aussi - je suppose que j'ai juste supposé comme il était en dessous de l'application principale, il serait le partager, bon à savoir pour référence future: S –

1

Comment vous avez configured authorization?

En outre, je suppose que vous n'êtes pas déjà authentifié dans le site parent?

Dans le sous-répertoire admin, vous devriez avoir quelque chose comme ce qui suit dans votre web.config (évidemment, vous pouvez avoir plus d'informations là-dedans aussi):

<configuration> 
    <system.web> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
    </system.web> 
</configuration> 

Cela niera tous les utilisateurs anonymes, mais permettre à tous accès authentifié des utilisateurs. Vous pouvez facilement étendre si vous utilisez un fournisseur de rôle pour autoriser uniquement certains rôles:

 <allow roles="Admin" /> 
     <deny users="*" /> 

Notez que vous avez besoin « Refuser tous les utilisateurs » là-dedans, comme le comportement par défaut est de permettre à tous les utilisateurs.L'autorisation fonctionne de haut en bas car elle commence en haut de la liste, et dès qu'elle trouve une correspondance, elle arrête le traitement, donc si l'utilisateur est dans le rôle "Admin", il n'obtiendra pas le message "Refuser". règle "tous les utilisateurs".

Vous pouvez également configurer ceci dans le fichier web.config racine en utilisant un <location> element.

En réponse aux commentaires

Et votre authentification/autorisation tous les travaux sur le site parent? Pourriez-vous éditer votre question afin d'inclure les sections web.config (aseptisées) que vous avez essayées pour que nous puissions voir s'il manque quelque chose? Par exemple, si vous utilisez des rôles pour verrouiller la zone d'administration, vous avez activé (<roleManager enabled="true">, par défaut à false).

+0

oui, j'ai essayé avec et sans la section d'autorisation. Autoriser tout le monde, refuser tous les noms, même refuser toutes les utilisations (*), mais je ne suis jamais invité à entrer des informations d'identification – ChrisCa

+0

Et oui, je ne suis pas encore configuré sur le site parent. Je peux visiter cela et être redirigé vers la page de connexion, mais quand je vais à/admin, je peux voir le site sans avoir été invité pour des identifiants – ChrisCa

+0

Je voulais dire "Authentifié", pas "configué" dans le dernier commentaire – ChrisCa

0

Nous faisons ce que vous essayez de faire assez souvent ici. Nous le faisons de la façon suivante: Le niveau racine est une application virtuelle, il contient le master web.config et global.ascx. Nous avons un dossier normal, 'Admin' à l'intérieur de cela. À l'intérieur de cela, nous avons un petit web.config, il contient seulement <authorization> des informations XML. Vous aurez besoin d'une page de connexion quelque part, soit le dossier racine ou Admin.

J'ai été un peu confus dans votre message à savoir s'il y a trois applications/répertoires impliqués (application, application parent, admin de l'application), ou seulement deux (& c'est l'admin). Je fais une hypothèse critique ici que c'est deux. Si vous avez les trois, il y aura encore du travail pour faire avancer les choses.

alt text http://i42.tinypic.com/t5j028.png

+0

Oui, Il est juste 2 sites. Le parent (le site principal de niveau supérieur) et l'administrateur (qui est le sous-site) Il est maintenant trié - je devais faire ce qui est suggéré dans l'article Single Sign On que j'ai posté ci-dessus dans l'une des réponses – ChrisCa

Questions connexes