source - gestion des utilisateurs asp.net mvc




Mixage de l'authentification par formulaires avec l'authentification Windows (5)

J'ai une application intranet (ASP.NET 3.5) qui a été conçue pour utiliser l'authentification par formulaires (avec le système d'adhésion aspnet par défaut). Je stocke également des informations supplémentaires sur les utilisateurs dans une autre table qui partage sa clé primaire avec la table aspnet_users.

Pour les utilisateurs qui font partie de notre domaine, je stocke leur nom de compte de domaine dans la table des utilisateurs secondaires, et je veux connecter automatiquement les utilisateurs dont le nom de compte de domaine correspond à un nom stocké dans la table.

J'ai lu les guides disponibles - ils datent tous d'il y a deux ans ou plus et supposent que vous êtes en mesure d'activer l'authentification Windows sur une page de connexion distincte qui vous permet d'extraire le nom du compte de domaine. De ce que je peux dire, cependant, ce n'est pas possible dans IIS7 (la méthode d'authentification globale est appliquée sur toutes les pages et ne peut pas être désactivée sélectivement, et les deux méthodes d'authentification ne peuvent pas être appliquées sur la même page).

Existe-t-il un moyen de faire passer IIS via le nom de compte de domaine Windows de l'utilisateur demandeur? Je n'ai pas besoin d'une authentification AD correcte, juste le nom de domaine.


En fait, vous pouvez le faire. Bit tard pour @dr_draik, mais cela a surgi dans un résultat google pour moi, donc je pensais partager quelques connaissances.

Si vous êtes en mode classique - Activez l'authentification Windows et Forms. Vous recevrez un avertissement pour ne pas pouvoir faire les deux à la fois, mais vous pouvez l' ignorer . Ensuite, vous pouvez spelunk autour de diverses propriétés comme Code:

HttpContext.Current.Request.ServerVariables["LOGON_USER"]

et pêcher le nom d'utilisateur hors de là.

Si vous êtes en mode intégré - 4021905 IIS7 Challenge et l'authentification basée sur la redirection de connexion ne peuvent pas être utilisés en même temps que IIS 7.0 Authentification à deux niveaux avec authentification par formulaires et authentification Windows qui vous permet de modifier sélectivement l'authentification pour différentes pages.


Il existe de nombreux articles sur le mélange de l'authenticité en configurant config pour utiliser les formulaires avec un accès anonyme à l'application. Deuxièmement, une page pour auth intégrée doit être créée avec les paramètres IIS définis pour refuser anonyme et utiliser l'authentification intégrée. Là vous feriez le tour de la magie en vérifiant la variable "Logon_User" de la collection ServerVariables des requets. Et enfin, pour l'authentification intégrée pour se connecter silencieusement à l'utilisateur, il doit avoir un nom court hébergé. Donc, si votre pièce d'authentification de formulaires est exposée à Internet via le FQDN, il devrait y avoir une sorte de redirection vers la page d'accueil courte. Je pense qu'il est possible de réaliser avec une seule application sous IIS avec 2 répertoires virtuels.


J'ai trouvé une solution en n'utilisant aucun add-ons spécial. C'était compliqué et impliquait de réunir des éléments de toutes les pages référencées ici. J'ai posté à ce sujet: http://low-bandwidth.blogspot.com.au/2014/11/iis7-mixed-windows-and-forms.html

En substance, les formulaires, les fenêtres et l'authentification anon doivent être activés. L'écran de connexion doit être basé sur des formulaires et contenir un bouton permettant de déclencher la connexion à Windows, qui génère un défi de réponse HTTP 401 qui, en cas de succès, crée un ticket de connexion basé sur les formulaires.

Les problèmes sont plutôt complexes, et le poste passe en revue les principes et la solution en détail.


Malheureusement, ce que vous essayez de faire n'est pas supporté. Pour qu'ASP.NET connaisse le nom d'utilisateur Windows, vous devez utiliser l'authentification Windows.

Vous pouvez configurer un autre site / répertoire virtuel qui vient de transférer les informations du nom d'utilisateur à une autre page. Mais que se passe-t-il lorsque des utilisateurs authentifiés non Windows essaient de se connecter?


(Plus pour l'exhaustivité de l'information vraiment)

J'ai posé une question à un gars de sécurité .Net lors d'une conférence il y a quelque temps. Sa réponse était que c'était techniquement possible, mais il ne l'avait jamais vu faire (et lui faire savoir si je l'avais fait et ça a marché!).

Il a suggéré la façon dont cela pourrait être fait en créant votre propre filtre ISAPI et en l'installant dans IIS. Le filtre ISAPI intercepterait les requêtes et effectuerait essentiellement le travail effectué par IIS lors de l'utilisation de l'authentification intégrée, mais il reviendrait à l'utilisation de formulaires si ce n'était pas le cas. Cela impliquait une logique complexe de challenge / réponse dans le filtre. C'était pour IIS6 cependant, donc il pourrait être différent dans IIS7.

Bien que cela puisse être techniquement possible, je ne suggérerais pas cette voie car elle semble être un peu un hack, et rouler votre propre sécurité n'est jamais vraiment une bonne idée (sauf si vous savez vraiment ce que vous faites).





windows-authentication