Désactiver l'Authentification par Formulaires sur sous-dossier ou un Répertoire Virtuel
Voici mon scénario:
J'ai un site web mis en place dans IIS (7.5) qui utilise l'Authentification par Formulaires. J'ai un sous-dossier à l'intérieur de ce site que je suis en utilisant un partage WebDAV. J'ai un Module HTTP personnalisé de suivi de mes demandes WebDAV et agit également comme un niveau d'authentification personnalisée. Cette coutume d'authentification envoie d'abord un HTTP 401 Défi pour obtenir les identifiants de l'utilisateur quand ils essayez de mapper un lecteur de mon partage WebDAV, puis les informations d'identification sont analysées hors de la Base en-tête d'Authentification côté serveur. Le problème est que la Base d'un en-tête d'Authentification ne sera envoyé que si les Formulaires d'Authentification est désactivée.
Ce qui est plus est que, normalement, quand mon HTTP Module ne trouvez pas un en-Tête d'Authentification, 401 Défi est envoyé (qui invite l'utilisateur à entrer des informations d'identification lorsque les Formulaires d'Authentification est désactivée). Cependant, avec des Formes Auth allumé, mon Module HTTP encore s'exécute et envoie un 401 Défi, mais il semble que les Formes Auth est de prendre la priorité donc dans un violon, je peux clairement voir une redirection vers:
/Compte/Login.aspx?ReturnURL=MySubFolder
Le point de l'authentification personnalisée est alors que je peux permettre à l'utilisateur de se connecter à mon site lors du mappage d'un lecteur de mon partage WebDAV. Je veux capturer leur site web des informations d'identification, les authentifier, puis leur montrer le contenu du répertoire.
Donc ma question est:
Est-il un moyen pour obtenir les Formulaires d'Authentification désactivé sur un sous-dossier ou le Répertoire Virtuel à l'intérieur d'un site web qui a des Formulaires d'Authentification activé?
J'ai vérifié que je peux contourner ce problème en créant un nouveau dossier dans mon site web et de mettre le sous-dossier, puis désactiver les Formes Auth sur l'Application elle-même, mais je préfère vraiment ne pas le faire si possible.
Tout ce que j'ai essayé (ci-dessous) a entraîné avec ma demande de carte de lecteur à Http://localhost/MySubFolder
arriver repris par l'Authentification de Formulaires (du moins c'est ce que je pense qui se passe) et redirigé vers /login.aspx?ReturnUrl=MySubFolder
(comme indiqué dans un violon).
Voici ce que j'ai essayé:
1) Ajouté un Web distincte.config dans MySubFolder
:
<configuration>
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</configuration>
2) Ajouté un <location>
dans la balise au niveau de la racine Web.config pour MySubFolder
comme ceci:
<location path="MySubFolder">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
3) Regardé mise à jour de la Fonctionnalité De Délégation dans IIS.
Personnellement, j'ai eu un doute avec les solutions ci-dessus en raison de ce que j'ai lu, ils sont conçus pour simplement permettre à tous l'accès, tout en laissant de l'Authentification par Formulaires activé. J'ai besoin d'un moyen d'obtenir des Formulaires d'Authentification est désactivé sur mon sous-dossier. Est-ce possible?
Je tiens également à noter que mon sous-dossier pourrait être un Répertoire Virtuel, mais il n'est pas nécessaire d'une façon ou de l'autre. J'ai juste besoin d'un moyen pour les Formulaires Auth être désactivée sur ce dossier.
Selon la demande, de mon site Web.fichier de configuration (au niveau du site):
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="MyConnString" connectionString="Persist Security Info=True;Initial Catalog=MyDB;Data Source=MyServer;User ID=UserName;Password=xxxxxxxxxx;MultipleActiveResultSets=True;"/>
</connectionStrings>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
</system.web>
<system.webServer>
<modules runManagedModulesForWebDavRequests="true" runAllManagedModulesForAllRequests="true">
<add name="CustomWebDAVModule" type="CustomWebDAVModule"/>
</modules>
</system.webServer>
</configuration>
web.config
fichier. Prenez soin de dissimuler des informations essentielles comme les db d'identification de l'utilisateur, etc lors de la publication.Merci pour le commentaire, @TanzeelKazi. J'ai regardé dans cette poursuite, et a été en mesure d'étroites ma question pour être plus précis. J'ai aussi la liste de l'ensemble de mon Web.config, qui est très minime dans mes tests. S'il vous plaît laissez-moi savoir si je peux fournir des informations supplémentaires!
Je ne pouvais pas pour la vie de me comprendre pourquoi mon application MVC est le décapage, le nom de répertoire virtuel lors de l'envoi de l'url de connexion. S'avère que j'ai raté le ~.
OriginalL'auteur lhan | 2012-12-12
Vous devez vous connecter pour publier un commentaire.
Cette question a déjà été répondu: Ou plusieurs des paramètres d'authentification web.config
Vous ne pouvez pas remplacer la racine authentication mode="Formes" de la balise à l'intérieur de l'emplacement des balises. Rendre le dossier de sa propre application est le moyen le plus facile.
Une autre option est de mettre en œuvre vos propres Formulaires personnalisés de l'authentification et de l'avoir ignorer la redirection de votre dossier webdav.
OriginalL'auteur Louis Ricci
Apparemment, vous avez pas correctement la configuration de WebDAV dans IIS.
Puisque vous voulez utiliser un module webdav pour l'authentification, nous avons d'abord besoin de s'assurer que IIS ne pas interférer avec vos requêtes WebDAV.
Procédez comme suit (notez que le point important est à l'étape 7):
Garder votre
web.config
comme il est (comme affiché dans la question).Activer WebDav dans IIS. Dans le gestionnaire des services IIS, sélectionnez votre site web. Dans la fenêtre principale ouverte
WebDAV Authoring Rules
.Dans le volet actions (sur la droite) cliquez sur
Enable WebDAV
.Maintenant, sélectionnez le sous-dossier que vous souhaitez activer WebDAV (je suis en utilisant
path3
dans mon exemple) en cliquant dessus, puis ouvrezWebDAV Authoring Rules
.Cliquez sur
Add authoring rule...
dans le volet actions (sur la droite).Dans la boîte de dialogue qui s'ouvre, assurez-vous que tous ces éléments sont sélectionnés
All content
,All users
,Read
,Source
etWrite
et cliquez surOK
. Cela permettra d'accorder l'accès à tout le contenu de ce sous-dossier pour tous les utilisateurs avec toutes les autorisations.Maintenant la partie la plus importante. Puisque vous voulez pour gérer l'authentification WebDAV par le biais de votre personnalisé WebDAV gestionnaire, nous devons indiquer explicitement IIS pas d'interférer avec l'authentification. Comment faisons-nous cela? Nous dire IIS pour permettre anonyme l'accès WebDAV. De cette façon, IIS ne pas essayer d'authentifier l'utilisateur et de votre module est libre de faire son autorisation d'exploitation. Pour faire cela, nous devons définir
Allow Anonymous Property Queries
àTrue
sousWebDav settings
. Les prochaines étapes vont mettre en évidence comment le faire.Ouvrir la racine du site
WebDAV Authoring Rules
.Cliquez sur
WebDAV settings...
.Ensemble
Allow Anonymous Property Queries
àTrue
.Fermez et redémarrez le client WebDAV qui vous mettra à l'essai. Ceci est pour s'assurer qu'il ne cache pas les paramètres de connexion à partir de la précédente configuration incorrecte.
Vérifier pour voir si le WebDAV de la configuration de votre site web fonctionne comme souhaité. 🙂
Il semble que le module WebDAV est d'interférer avec l'authentification par formulaire pour vos demandes. Je vais penser à certains plus de cours et de revenir vers vous plus tard (je l'espère avec une solution de travail).
Pensez-vous que le haut-IIS module WebDAV ou mon module personnalisé? Mon module personnalisé semble fonctionner normalement - si tu veux dire que le module IIS, qui sonne comme une assez bonne estimation 🙂 je vais continuer à chercher en!
Oui je crois que c'est le module intégré qui interfère avec votre demande, mais je pense aussi que c'est juste un problème de configuration. Voir si ma mise à jour de réponse aide. 🙂
Merci, toutefois, la seule chose que j'avais configuré différemment à partir de votre réponse, j'ai eu mon WebDAV règle de création mis en place au niveau du site, et pas seulement sur mon sous-dossier (bien que lorsque c'est au niveau du site, mon sous-dossier hérite de toute façon). Je pense que c'est probablement mieux de le mettre à la sous-dossier niveau comme vous l'avez mentionné, mais dans un violon, je suis toujours de voir une redirection vers mon Login.page aspx quand j'essaie de mapper un lecteur de mon sous-dossier, sans demander des informations d'identification.
OriginalL'auteur Tanzeel Kazi
Au sein de votre Module HTTP personnalisé, vous pouvez dire à l'Authentification de Formulaires pour supprimer la redirection via
HttpResponse.SuppressFormsAuthenticationRedirect
:Une autre option est d'accrocher le
FormsAuthenticationModule.Authenticate
événement pour s'authentifier avant de Formulaires d'Authentification fonctionne à tous. Ce serait vous obliger à pêcher dans IIS pour l'instance de module, je n'en ai pas un exemple pour.Ces deux options sont basées sur l' .NET de 4,6 source de référence: http://referencesource.microsoft.com/#System.Web/Security/FormsAuthenticationModule.cs,ac471f8ac73cdb2b
OriginalL'auteur ligos