Utiliser l'authentification Anonyme dans MVC4 sur un seul contrôleur lorsque l'ensemble de l'application utilise Windows authentification au
J'ai un MVC4 application Web qui utilise l'Authentification Windows, qui est dans le web.config j'ai
<authentication mode="Windows" />
Et qui fonctionne très bien et tout est ok.
Mais maintenant, j'ai besoin d'un contrôleur (une Web API contrôleur en fait) qui doivent être accessibles de façon anonyme à partir d'un tiers de la composante. Le problème est que chaque fois que je veux appeler cette méthode il demande des informations d'identification utilisateur.
J'ai essayé de mettre AllowAnonymous
attribut de contrôleur et de méthodes, mais il n'a pas réussi.
[AllowAnonymous]
public bool Get(string Called, string Calling, string CallID, int direction)
J'ai vérifié sur les deux IIS Express et IIS 8 avec l'authentification Anonyme et l'authentification Windows est activé.
Il semble que l'authentification windows précède tous les autres authentification et ne peut pas être remplacée.
Est-il un moyen pour accomplir cette?
OriginalL'auteur Plamen Ignatov | 2013-02-26
Vous devez vous connecter pour publier un commentaire.
Ajouter à votre site Web.config. Ici, mon contrôleur est nommé "WebhookController".
Voir cet article pour plus d'info.
Modifier
- Comme Erik mentionnés ci-dessous, dans les applications MVC vous ne devez pas utiliser le web.config
<authorization>
balises pour la sécurité. Au lieu de cela, utiliser[Authorize]
attributs. Cela permettra à votre[AllowAnonymous]
attributs fonctionner correctement. Vous pouvez en lire plus à ce sujet ici.Il fonctionne pour moi. Je suis également en utilisant
<authentication mode="Windows">
avec MVC3. Je n'ai pas de configuration spéciale des règles de routage. Vous pouvez avoir besoin de jouer avec le chemin de localisation.En lui donnant une seconde chance qu'il fonctionne. Il semble
AllowAnonymous
attribut n'est pas suffisant avec l'authentification windows et de "localisation" de la balise est ce qui fonctionne le mieux. Merci de m'indiquer ce que pourrait être la bonne solution pour le problème!+1 Cette correction d'un problème que j'ai. Bien que nous avons utilisé
<allow users="?"/>
au lieu de permettre aux utilisateurs anonymes.Le problème avec l'utilisation du Web.config emplacement pour la sécurité, c'est que cela doit correspondre à toutes les URL qui peut être utilisé pour accéder à une URL. Lorsque vous envisagez de routage par défaut, cela pourrait signifier que vous avez à créer un grand nombre d'entrées d'emplacement.
OriginalL'auteur
Accepté la réponse semble être mis à jour, donc...
Dans votre site web.config, supprimez ces lignes:
Dans l'explorateur de solutions, cliquez sur votre projet, puis cliquez sur f4 (ou ouvrez les propriétés de l'explorateur). Activer L'Authentification Anonyme.
Maintenant, vous êtes libre d'utiliser le
Authorize
etAllowAnonymous
Attributs. Ils sont assez simple,Authorize
signifie que l'utilisateur doit être autorisé afin d'accéder à l'action d'un contrôleur ou d',AllowAnonymous
signifie le contraire. Si un utilisateur non autorisé tente d'accéder à un contrôleur ou une action avec l'Authorize
attribut, ils seront redirigés vers une page de connexion. Si vous mettezAuthorize
sur un contrôleur elle s'applique à toutes les actions des contrôleurs, à l'exception de ceux avecAllowAnonymous
.OriginalL'auteur
web.config
ne doit pas être touché, comme indiqué ici.Afin de parvenir à un résultat souhaité
AllowAnonymous
et[Authorize]
(et peut-être quelques personnalisé autorisation d'attribut, si nécessaire) doit être utilisé.Étapes de travail à effectuer:
Assurer IIS a deux l'Authentification Anonyme et l'Authentification Windows configuré pour l'application web /site web
Tous les contrôleurs doivent utiliser
[Authorize]
attribut. Ceci peut être facilement atteint si tous les hériter d'une commune de contrôleur de classe (par exemple BaseController /BaseApiController). E. g.:Ajouter
[AllowAnonymous]
attribut à toutes les actions qui sont censées être anonymes. E. g.:OriginalL'auteur