Comment faire pour autoriser l'accès anonyme au site web sur IIS 7.5?
tl;dr: Pourquoi ne
<allow users="?">
travail sur IIS Express, mais pas sur IIS?
Fond
J'ai un nouveau asp.net formulaires web du projet. Lors de l'exécution en local sur Windows 7 IIS Express, je peux bloquer "tous les utilisateurs" de l'accès au site par l'ajout d'un refuser *
règle pour web.config:
web.config
<configuration>
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</configuration>
cela m'amène à se voir refuser l'accès:
Et ce qui fait sens.
Je peux refuser l'accès aux utilisateurs anonymes
Je le web.config, je peux bloquer l'accès à anonyme les utilisateurs, en utilisant la ?
marqueur, plutôt que de la tous (*
) marqueur:
<authorization>
<deny users="?" />
</authorization>
Et parce que je ne suis pas authentifié, je vais à nouveau être 401
non autorisé:
Et qui a du sens.
Autoriser les connexions anonymes
Je peux autoriser l'accès anonyme, par la modification de la deny
dans le web.config pour allow
:
<authorization>
<allow users="?" />
</authorization>
Et maintenant, je suis amené à droite de la page d'accueil:
et qui a du sens.
Mais ne fonctionne pas sur IIS
Les travaux ci-dessus sur IIS Express. Mais lorsque je publie à Windows Server 2012 R2, IIS 7.5, en essayant de allow
anonyme (?
) les utilisateurs ne fonctionne pas:
Qui n'a pas de sens:
- fonctionne sur IIS Express
- échoue sur IIS 7.5
Essayer de permettre à chacun
Plutôt que:
- permettant seulement les utilisateurs anonymes (
?
) - je peux essayer de permettre à tous les utilisateurs (
*
)
- je changer web.config à nouveau pour permettre à tout le monde (*
):
<authorization>
<allow users="*" />
</authorization>
Et sur place, je peut encore accéder au site:
mais une fois que je publie de IIS 7.5, il ne parvient toujours pas:
Ce qu'il se passe?
Je ne fais rien de mal. Donc que dois-je changer?
Au départ, j'ai créé un vide site web, et a commencé à ajouter des choses pour elle. Plus tard, j'ai besoin de créer une véritable web-site (les pages que les informations affichées, et les boutons de la souris), j'ai donc commencé avec un Vide Formulaires Web web-site.
Mon sentiment est que Owin ont tout cassé.
Néanmoins, ce qui se passe?
Solution
Je l'ai trouvé. Il y a certains paramètres sur un site web qui ne vont pas avec le web-site. Qui est, il ya des options de configuration sur un site web que vous ne pouvez pas configurer via web.config
, ou tout autre fichier dans le site web du dossier. En particulier:
Je ne sais pas où IIS magasins de l'utilisation de anonyme d'authentification. Mais sans authentification anonyme, IIS est incapable de se rendre compte qu'un utilisateur anonyme est anonyme.
Activation de l'authentification anonyme:
causes IIS à réaliser que les utilisateurs anonymes sont anonymes.
Qui explique:
- pourquoi il a travaillé sur IIS Expres
- pourquoi il ne fonctionne pas sur IIS 7.5
- pourquoi il ne fonctionne toujours pas quand les deux sites web ont exactement le même ensemble de fichiers de configuration
Ça n'explique pas pourquoi IIS ne traite pas les utilisateurs anonymes en tant qu'anonyme de quand la anonyme de l'authentification n'est pas activée; mais c'est une autre question pour un autre jour. Si vous avez lu en bas à ici, vous pouvez le copier-coller tout ce que je viens de dire, et d'obtenir de l'accepter. Sinon je vais devoir attendre deux jours pour répondre moi-même. Mieux que vous obtenez la rep.
Vous devez vous connecter pour publier un commentaire.
Vous apprendre quelque chose par trouver la solution. Félicitation.
Autorisation arrive après d'authentification. Donc sur IIS, vous avez vu le 401.2 page d'erreur avant la règle d'autorisation n'a jamais été traitée. Seulement après une bonne méthode d'authentification est activée, alors les choses commencent à travailler.
IIS Express devrait vous donner la même 401.2 page d'erreur si vous désactivez toutes ses méthodes d'authentification. Juste une remarque.
Un Microsoft Modèles et Pratiques de l'article explique plus en détail pourquoi vous avez besoin de l'authentification anonyme est activée afin de permettre aux utilisateurs anonymes:
Il y a deux façons pour qu'un utilisateur authentifié lors de l'émission d'une demande de IIS:
La confusion est ici qu'il y a une différence entre:
De IIS point de vue de toute demande qui sera authentifié à l'aide de Formes (ou Owin, ou tout autre module d'authentification personnalisé) est encore un anonyme demande:
Lorsque je tentais de permettre anonyme accès des utilisateurs:
Qui est un Formes l'authentification de la directive. Mais, pour la même atteindre formes d'authentification, vous devez autoriser anonyme d'authentification au niveau de IIS.