3

Nous avons une application ASP.NET partiellement en MVC (le reste étant un CMS basé sur des formulaires Web). L'application est authentifiée via l'authentification par formulaire, bien que tout utilisateur accédant à partir d'un ensemble spécifique d'adresses IP soit automatiquement affecté à un utilisateur "spécial".Deuxième couche d'authentification dans l'application ASP.NET MVC2

Nous avons actuellement une application pour enfants que nous aimerions idéalement utiliser dans l'application MVC (parent). Cette application utilise l'authentification Windows en tant que 2ème couche d'authentification. Existe-t-il un moyen simple de conserver la deuxième couche d'authentification (éventuellement par un deuxième attribut authorize)? Ceci étant donné que les utilisateurs peuvent se connecter à cette application à la fois en & en dehors de l'ensemble des adresses IP utilisées pour l'utilisateur d'authentification de formulaires spéciaux, ce qui exclut l'authentification par formulaires droits. Nous ne sommes pas non plus nécessairement liés à l'authentification Windows pour cette deuxième couche si cela rend la solution plus facile.

Répondre

2

Je suis encore essayer complètement, mais de ce que j'ai vu & essayé jusqu'ici, ma solution à mon problème est de:

  1. Utiliser l'authentification Les formulaires pour la zone protégée au lieu d'authentification Windows.
  2. Créez un rôle pour certains utilisateurs autorisés à accéder à cette zone & attribuez-le en conséquence.
  3. Créez un nouvel attribut d'autorisation personnalisé, en envoyant un utilisateur non authentifié à la page de connexion. Dans ce cas, je dois le faire car l'application définit la page de connexion comme étant le vérificateur d'adresse IP (au lieu d'une page de connexion appropriée), donc l'utilisation d'un attribut d'autorisation normal entraînerait une requête boucle infinie. Le processus est similaire à la solution décrite here, sauf que j'utilise un RedirectResult au lieu de RedirectToRouteResult car la page de connexion est toujours dans WebForms au lieu de MVC. (Facultatif) puisque j'utilise des zones MVC, je peux même create a base controller with the custom authorisation attribute & derive all other controllers from it. Cela me sauve de préfixer chaque méthode dans chaque contrôleur (& sans doute m'empêcher d'oublier de le faire quelque part!).

Je suis encore ouvert à d'autres solutions!

+1

+1 pour la question, vraiment intressant, et +1 pour votre propre réponse détaillée complète. Très bon utilisateur SO. Laissez-moi vous donner une seule suggestion: vous pouvez spécifier votre attribut d'autorisation personnalisé globalement par [GlobalFilters] (http://weblogs.asp.net/gunnarpeipman/asp-net-mvc-3-global-action-filters), au lieu de classe de contrôleur de base –