Web.config permettre l'accès aux données de localisation pour un utilisateur spécifique
J'ai un serveur web qui permet aux utilisateurs de télécharger des fichiers qui sont spécifiques à chaque utilisateur. Pour être sûr que chaque utilisateur ne peut télécharger ses propres fichiers, ils doivent s'authentifier via l'Authentification de Base d'. Donc, pour chaque utilisateur il y a un windows-compte sur le serveur qui a les autorisations de lecture à l'utilisateur de dossier spécifique.
Maintenant je veux déplacer cette fonctionnalité à un autre serveur. Je ne veux pas créer des comptes windows pour les utilisateurs, mais toujours garder l'Authentification de Base. J'utilise donc le Personnalisé l'Authentification de Base HTTP Module en combinaison avec un Personnalisé MembershipProvider qui me permet de définir des utilisateurs dans le web.config.
L'authentification fonctionne très bien, mais après vous connectant avec jack
ou jill
(voir web.config) je suis en mesure d'accéder à deux endroits Dir1
et Dir2
. C'est également le cas si j'en commentaire le <allow users="jack" />
partie à l'emplacement des balises.
Infos Supplémentaires:
J'ai créé un Défaut.aspx fichier et l'ajout d'un
<% Response.Write(HTTPContext.Current.User.Identity.Name) %>
qui renvoie le nom d'utilisateur correct en fonction de qui s'est connecté.
<% Response.Write(HTTPContext.Current.User.Identity.IsAuthenticated) %>
renvoie la valeur True.
Que dois-je faire seule jack
est en mesure d'accéder (= de télécharger des fichiers à partir de) Dir1
et seulement jill
est en mesure d'accéder (=de télécharger des fichiers à partir de) Dir2
mais pas dans l'autre sens?
EDIT: j'ai essayé d'ajouter web.les fichiers de configuration pour chaque sous-répertoires au lieu de l'emplacement des balises, comme mentionné par utkai - avec le même résultat. Chaque utilisateur peut accéder à n'importe quel répertoire.
Voici mon site Web.fichier de configuration:
<configuration>
<system.webServer>
<modules>
<add name="CustomBasicAuthentication" type="LeastPrivilege.CustomBasicAuthentication.CustomBasicAuthenticationModule, LeastPrivilege.CustomBasicAuthenticationModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=F20DC168DFD54966"/>
</modules>
<security>
<authentication>
<customBasicAuthentication enabled="true" realm="TEST" providerName="AspNetWebConfigMembershipProvider" cachingEnabled="true" cachingDuration="15" requireSSL="false"/>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</security>
</system.webServer>
<system.web>
<membership defaultProvider="AspNetWebConfigMembershipProvider">
<providers>
<add name="AspNetWebConfigMembershipProvider" type="LeastPrivilege.AspNetSecurity.Samples.WebConfigMembershipProvider, WebConfigMembershipProvider"/>
</providers>
</membership>
<authentication mode="Forms">
<forms>
<credentials passwordFormat="Clear">
<user name="jack" password="jack"/>
<user name="jill" password="jill"/>
</credentials>
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
<location path="Dir1" allowOverride="false">
<system.web>
<authorization>
<!-- <allow users="jack" /> -->
<deny users="*" />
</authorization>
</system.web>
</location>
<location path="Dir2" allowOverride="false">
<system.web>
<authorization>
<!-- <allow users="jill" /> -->
<deny users="*" />
</authorization>
</system.web>
</location>
</configuration>
je suis en mesure d'accéder à deux endroits Dir1 et Dir2 vous avez un Répertoire de Navigation activé dans votre Serveur Web IIS?
Non je n'ai pas de répertoire de navigation activé. Ce que je voulais dire, c'est que je peux voir/télécharger des fichiers qui sont contenus dans ces répertoires, quel que soit l'utilisateur connecté.
Avez-vous un lien vers
download
ou vous êtes directement en tapant le url
?Je viens de taper quelque chose comme
http://localhost/Dir1/jack.txt
dans le addressbar des fins de test. Quelle différence cela fait-il?OriginalL'auteur Philipp Grathwohl | 2012-04-03
Vous devez vous connecter pour publier un commentaire.
Mise à jour #3
Vous pouvez activer URLAuthorization à force de IIS pour protéger les fichiers qui ne sont pas normalement traitées dans IIS. La solution dépend d'IIS 7.x et Intégrée des pipelines.
Mise à jour #2
Vous pouvez passer entièrement à l'authentification de Formulaires que par la suppression de la coutume des choses que vous avez ajouté et effectuez les opérations suivantes.
En fait, j'ai testé et il ne permet jack à dir1 et jill dans dir2. À la fois peut accéder à la racine.
Si cela ne fonctionne pas, nous avons besoin de discuter de votre installation.
web.config
De connexion.aspx - Vous devez ajouter la redirection à partir de la Connexion de contrôle parce que sinon Formes d'authentification va chercher une base de données dans le répertoire App_Code, qui n'existe pas.
De connexion.aspx.cs
Mise à jour #1
Je suis allé à travers l'exemple que vous avez lié comme la Coutume l'Authentification de Base HTTP Module, puis suivi par le biais de Le Module HTTP qui a un lien tout en bas de source supplémentaire.
Cette source a une adhésion à l'exemple de fournisseur de l'aide de l'authentification de base. J'ai l'impression que vous êtes en cours d'exécution pour des ennuis par le mélange dans les Formulaires d'adhésion fournisseur que vous avez dans votre site web.config.
Lorsque vous commencez à faire votre propre authentification, les choses ne vont pas bien, et vous avez généralement besoin d'ajouter dans votre propre tout.
Ce code fonctionne à partir de ce lien supplémentaire sur ma fin.
Comme un ajout de la possibilité, si vous souhaitez laisser ASP.NET gérer l'ensemble de l'adhésion elle-même et que vous utilisez SQL pour stocker le tout, pensez regarder http://weblogs.asp.net/sukumarraju/archive/2009/10/02/installing-asp-net-membership-services-database-in-sql-server-expreess.aspx pour voir comment utiliser l'assistant pour configurer SQL.
De la construction dans l'adhésion de l'authentification de Formulaires et d'être beaucoup moins de travail que l'aide personnalisée.
Version Précédente
Je n'ai jamais eu de chance avec l'aide de la
<location>
balises, donc je viens de mettre un nouveau site web.les configs dans les répertoires. J'ai aussi eu des ennuis, quand je n'exclue pas anonymes dans des sous-dossiers. Cela semble être le navigateur par défaut anonymes qui vont passer à traversVoici comment je le fais.
De la racine web.config
Sous-répertoire web.config. Assurez-vous de refuser explicitement tous les autres utilisateurs. Si vous n'avez pas nier tous les autres utilisateurs, ils peuvent encore s'en.
Pouvez-vous fournir les détails de votre carte de membre / code d'authentification? J'ai créé quelques simples dans le passé et peut-être de quelque secours.
Comme mentionné dans la question, j'ai utilisé le MembershipProvider à partir d'ici: leastprivilege.com/... avec l'extension leastprivilege.com/... en combinaison avec le Module HTTP. S'il vous plaît laissez-moi savoir quelles sont les informations dont vous avez besoin. Merci
Oups, j'ai raté ça. Je vais essayer d'aller un peu et voir si je peux voir ce qu'il se passe
J'ai utilisé le MembershipProvider (Formes) afin que je puisse définir les utilisateurs du web.config au lieu d'une Base de données SQL. Mais dans ce cas, je vais essayer ça. Connaissez-vous d'autres MembershipProvider qui me permet de définir des utilisateurs dans le web.config?
OriginalL'auteur Kirk
Voici un lien vers un bon article avec des détails à plusieurs situations, où l'on voudrait autoriser/interdire l'accès à la page ou un dossier:
Réglage de règles d'autorisation pour une page ou un dossier dans le web.config
Comme un commentaire dans un projet, nous le faisons, nous utilisons l'option de web individuels.fichier de configuration dans chaque dossier, comme indiqué dans le lien, et il travaille pour nous l'amende juste.
Espérons-le, il aide à résoudre votre problème.
OriginalL'auteur utsikko
cette approche est similaire, mais différent - l'emplacement est un fichier au lieu d'un répertoire:
Est-il possible de permettre à l'utilisateur anonyme pour parcourir que quelques fichiers à partir d'un dossier
OriginalL'auteur wazz
Utiliser cette étape-par-étape pour appliquer l'étiquette sur le Web.fichier de configuration pour configurer l'accès à un fichier et de dossier.
Plus d'infos...
OriginalL'auteur Majid Hosseini
Définir les éléments suivants dans votre
Web.config
<modules runAllManagedModulesForAllRequests="false">
Lieu de l'événement suivant dans votre
Global.asax
fichier.Maintenant, chaque fois que vous tapez l'URl comme ci-dessous.
Le contrôle sera toujours passer à
Application_BeginRequest
événement. Vous avezRequest.Url
de l'information et deCurrent User information
et vous pouvez procéder à la validation ici.À l'aide de code ci-dessous
throw new HttpException(403,"Acess Denied");
ou envoyer l'utilisateur vers une autre page avec de l'utilisateur message amical.
OriginalL'auteur Pankaj