Le mélange des Formes et de l'authentification Windows .Net 4.5
Cela a été possible jusqu'à .Net4.0 et IIS 7.5.
L'idée générale est que vous activez anonyme et l'authentification de formulaires pour votre site intranet et dans un sous-répertoire que vous activez l'authentification windows avec authentification de formulaires et de désactiver anonyme. En désactivant les formes 401 => redirection 302 avec certains de code personnalisé, vous serez en mesure d'obtenir une prise de le utilisateurs nom d'utilisateur et de domaine.
Si vous faites une recherche google pour trouver une solution tous les chemins semblent mener à ce blog/solution:
http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/
Toutefois, lorsque la mise à niveau .net 4.5 et IIS8 de casse, Toujours forcer une redirection 302 vers la page de connexion et pas moyen d'obtenir une prise de les usernamen.
Quelqu'un a résolu ce encore?
OriginalL'auteur Fiffe | 2013-12-04
Vous devez vous connecter pour publier un commentaire.
J'ai fait un MVC 5 solution qui le fait ressembler à un prestataire externe, le code source complet ici:
https://github.com/MohammadYounes/MVC5-MixedAuth
Je n'ai pas eu la chance de le tester sur IIS 8, essayez-le et laissez-moi savoir.
Comme je comprends l'utilisateur doit entrer son nom d'utilisateur windows dans le but d'authentifier avec Windows, c'est bon? Vous ne pouvez pas le faire automatiquement?
nope, c'est l'option de connexion automatique.
Ce paramètre IIS doit être utilisé?
voir github.com/MohammadYounes/Owin-MixedAuth#iis
OriginalL'auteur MK.
Par mes tests de ce programme d'installation (.NET 4.5 /IIS 7.5 avec l'authentification windows et les formes d'authentification activé), la condition suivante
(System.Web.HttpContext.Current.User.Identity is System.Security.Principal.WindowsIdentity)
est
true
(après que l'utilisateur s'authentifie avec succès via l'authentification Windows), ce qui peut théoriquement être utilisé pour déterminer un moyen de contourner ce problème. Vous n'avez pas poster tout le code, donc je ne peux pas dire pour sûr de savoir comment vous permettrait de résoudre votre problème. Êtes-vous créer un ticket d'authentification forms?Il semble que l'authentification Windows maintenant l'emporte sur l'authentification de Formulaires, et
Request.IsAuthenticated == true
avant même le code crée le ticket d'authentification Formulaires! Très ennuyeux, cela a causé des problèmes pour un de mes clients quand ils ont décidé de l'installer .NET 4.5, après qu'ils avaient été fonctionne bien depuis plusieurs années par le mélange des deux Fenêtres et des formes auth. Pour le moment (jusqu'à ce qu'un patch est prêt, et le client a le temps de tester et de déployer) la solution a été de supprimer .NET 4.5 et re-installer 4.0. Si vraiment ils pensent qu'ils ont besoin de 4,5 pour quelque chose, ils vont utiliser un diff de la machine.Par exemple, vous pouvez créer une identité personnalisée classe avec votre propre version de
bool IsAuthenticated
au lieu de miser uniquement surRequest.IsAuthenticated
(encore une fois, vous ne publiez pas de code donc je ne peux que supposer que c'est ce que vous faites). Ensuite, la solution consiste à vérifier si les formulaires de ticket d'authentification dans le cas où ces deux facteurs sonttrue
:System.Web.HttpContext.Current.Request.IsAuthenticated && (System.Web.HttpContext.Current.User.Identity is System.Security.Principal.WindowsIdentity)
Vous ne pouvez plus compter uniquement sur
Request.IsAuthenticated
parce que, techniquement, la demande a été authentifié lorsque l'utilisateur authentifié à l'aide de l'authentification Windows. (Alors qu'avant, lorsque l'on mélange de l'authentification windows et formes auth,Request.IsAuthenticated
n'était pastrue
jusqu'à ce que les formulaires de ticket d'authentification a été créé.)Je le fais aussi pour l'authentification unique. Si je pouvais configurer le système afin d'éviter la création de
Request.IsAuthenticated=true
après l'authentification windows (et avant les formes auth), j'ai pu éviter de faire un patch (modifier tout le code qui vérifieRequest.IsAuthenticated
d'utiliser un rouleau de-mon-propre propriété à la place.) Seriez-vous prêt à publier votre site web.config s'il vous plaît? Je vois même comportement dans server 2012/iis8 (la demande est considéré comme authentifié après l'authentification windows succès, mais à des formes d'authentification, afin de "fenêtres" est le principal auth méthode de asp.net point de vue au lieu de formes.. mais pas de chance avec les options de configuration). Merci pour l'info.OriginalL'auteur nothingisnecessary