Le mélange des Formes d'authentification avec l'authentification Windows
J'ai un (ASP.NET 3.5) application intranet qui a été conçu pour utiliser l'authentification par formulaires (avec la valeur par défaut du réseau le système d'adhésion). J'ai également stocker plus d'informations sur les utilisateurs dans un autre tableau qui partage sa clé primaire avec le aspnet_users table.
Pour les utilisateurs qui font partie de notre domaine que j'ai magasin de domaine le nom de compte dans le secondaire table des utilisateurs, et je tiens à vous connecter automatiquement à des utilisateurs dont le nom du compte de domaine correspond à un nom stocké dans la table.
J'ai lu les guides qui sont disponibles, ils sont tous à partir de deux ans ou plus, et supposons que vous êtes en mesure d'activer l'Authentification Windows sur une autre page de connexion qui permet d'extraire le nom du compte de domaine. À partir de ce que je peux dire, cependant, ce n'est pas possible dans IIS7 (l'ensemble de la méthode d'authentification est appliquée sur toutes les pages et ne peut pas être désactivé de manière sélective, et les deux méthodes d'authentification ne peut pas être appliquée sur la même page).
Est-il un moyen d'obtenir de l'IIS de passer par le biais du compte de domaine windows nom de la demande de l'utilisateur? Je n'ai pas besoin de l'authentification AD, juste le nom de domaine.
Vous devez vous connecter pour publier un commentaire.
En fait, vous pouvez le faire. Peu tard pour @dr_draik, mais cela a surgi dans google résultat pour moi, donc je pensais que je voudrais partager quelques connaissances.
Si vous êtes en mode classique - Activer de Windows et les Formes auth. Vous recevrez un avertissement de ne pas être en mesure de 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 de poisson, le nom d'utilisateur de sortir de là.
Si vous êtes en mode intégré - 4021905 IIS7 Défi base et d'acceptation de connexion de l'authentification basée sur ne peuvent pas être utilisés simultaneiously conduit à IIS 7.0 Deux niveaux d'Authentification avec l'Authentification de Formulaires et de l'Authentification Windows qui est un module qui vous permet de modifier de manière sélective la auth pour les différentes pages.
Vous pouvez toujours configurer jusqu'à 2 demande distincte dans IIS7. On aurait pu l'Authentification Windows est activé. L'autre serait l'application principale avec l'authentification par formulaires. Si un utilisateur a le windows authentification de l'application, la page pourrait saisir leurs informations d'identification et de passer à l'authentification de formulaires d'application.
(Plus pour l'exhaustivité de l'information vraiment)
J'ai demandé à un .Net gars de la sécurité à cette question lors d'une conférence d'un certain temps. Sa réponse a été qu'il est techniquement possible, mais il ne l'avait jamais vu faire (et à lui laisser savoir si je l'ai fait et ça a marché!).
Il a suggéré que la façon dont il pourrait être fait en faisant votre propre filtre ISAPI et de l'installer IIS. Le filtre ISAPI permettrait d'intercepter les demandes et essentiellement de faire le travail qu'IIS n'lors de l'utilisation de l'authentification intégrée de, mais de retour à l'aide de formulaires si ce n'était pas présente. Ce qui a impliqué le complexe de challenge/réponse logique dans le filtre. C'était pour IIS6, donc il pourrait être différent dans IIS7.
Bien que cela soit techniquement possible, je ne dirais pas cela itinéraire comme il se sent comme un peu un hack, et rouler votre propre sécurité n'est jamais vraiment une bonne idée (sauf si vous vraiment savez ce que vous faites).
Il y a beaucoup d'articles sur le mélange de la authenticaton par le paramètre de config à utiliser les formulaires d'autoriser l'accès anonyme à l'application. Deuxièmement, une page intégrée auth doit être créé avec les paramètres IIS ensemble de refuser l'anonyme et l'utilisation Intgrated d'Authentification. Il vous faudra le tour de magie par la vérification de la "Logon_User" variable de la requets de la collection ServerVariables. Et enfin pour l'authentification intégrée silencieusement signe de l'utilisateur, il doit avoir des manches hébergé nom. Donc, si vos formulaires d'authentification pièce est exposée à internet via le nom de domaine complet, il devrait y avoir une sorte de redirection vers le court de l'hôte de la page. Je pense qu'il est possible de réaliser avec juste une application sous IIS avec 2 répertoires virtuels.
J'ai trouvé une solution en utilisant rien de spécial à ajouter-ons. C'était délicat et participent à concocter des éléments à partir 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 essence, les formes, les fenêtres et les anon authentification doivent être activés.
L'écran de connexion devrait être basée sur des formulaires, et contiennent un bouton pour déclencher de connexion de Windows, qui émet un HTTP 401 de réponse de défi qui, en cas de succès crée une base de formulaires de connexion billet.
Les questions sont assez complexes, et de la poste à travers les principes et la solution en détail.
Malheureusement, ce que vous essayez de faire n'est tout simplement pas pris en charge. Pour ASP.NET pour connaître le nom d'utilisateur Windows, vous devez utiliser l'Authentification Windows.
Vous pourriez mettre en place un autre site /répertoire virtuel que simplement transmis le nom d'utilisateur des informations à une autre page. Mais qu'advient-il lorsque la non-authentifié par Windows utilisateurs essaient de se connecter?
J'ai obtenu quelque chose que vous pouvez essayer vous ne savez pas si cela va fonctionner.
Dans le passé, nous avons utilisé
Request.ServerVariables["LOGON_USER"]
mais, évidemment, pour ce retour à une valeur non vide, vous devez désactiver l'accès Anonyme.Voir cet article: http://support.microsoft.com/default.aspx/kb/306359
Il suggère de garder l'accès Anonyme sur le IIS côté, et de l'authentification de Formulaires, mais nier l'utilisateur anonyme comme suit: