Je n'ai jamais utilisé l'authentification Windows pour ASP.NET MVC applications Web auparavant, à l'exception de l'authentification par formulaires. J'ai récemment eu une application Web ASP.NET MVC 4 qui requiert une implémentation de l'authentification Windows pour les utilisateurs autorisés à se connecter au serveur Web de mon entreprise. Donc, j'ai quelques questions concernant l'authentification Windows. J'utilise Visual Studio 2012.
Comment fonctionne l'authentification Windows?
Comment implémenter correctement l'authentification Windows dans le fichier web.config?
Comment tester si l'authentification Windows fonctionne vraiment pour mon site Web ASP.NET MVC 4? En d’autres termes, comment puis-je le tester sur mon PC de développement local avec le système local IIS (version 8), et sur le serveur Web réel de mon entreprise avec IIS version 7?
J'ai découvert une vidéo utile qui m'a été très utile en montrant, étape par étape, l'implémentation et le test de l'authentification Windows pour un site Web ASP.NET MVC. Donc, je ferme cette question.
Vidéo d'une affiche très gentille:
Pour IIS 8.5 et MVC 4:
Comment fonctionne l'authentification Windows?
Dans ce mode, User.Identity
(un péché HttpContext.Current.User.Identity
) est renseigné par le serveur Web sous-jacent. Cela pourrait être IIS Express dans le lien de @R Kumar démontré, ou complet IIS comme dans la vidéo de @Thomas Benz.
Plus précisément, User.Identity est un objet WindowsIdentity. Par exemple. le casting suivant fonctionnera:
WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;
Comment implémenter correctement l'authentification Windows dans le fichier web.config?
<system.web>
<authentication mode="Windows" />
...
Comment tester si l'authentification Windows fonctionne vraiment pour mon site Web ASP.NET MVC 4? En d'autres termes, comment puis-je la tester sur mon PC de développement local avec local IIS (version 8) et sur le serveur Web réel de mon entreprise avec IIS version 7?
Commencez par modifier l'autorisation ASP.NET pour exclure l'utilisateur actuel. Par exemple.
<system.web>
<authentication mode="Windows" />
<authorization>
<allow users="yourdomain\someotheruser" />
<deny users="*" />
</authorization>
Deuxièmement, activez l'authentification Windows pour votre site à l'aide de IIS. C'est sous la fonctionnalité 'Authentification'. Et désactivez l'anonymat authentification.
Notez que les explications plus anciennes suggèrent que vous apportiez des modifications sous l’élément web.config de votre site. Toutefois, des implémentations récentes IIS empêchent cela pour des raisons de sécurité.
Troisièmement, pointez votre navigateur sur la page Web. Le navigateur doit vous demander de fournir des informations d'identification, car l'utilisateur actuel n'est pas autorisé à accéder au site Web. Indiquez ceux qui sont autorisés pour le site et votre code MVC devrait s'exécuter.
Quatrièmement, vérifiez l'identité de l'utilisateur. Par exemple.
WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;
J'ai fait cela avec ASP.NET MVC 1.0. C'était il y a assez longtemps. Je me souviens que les paramètres IIS étaient source de confusion. Je viens de faire quelques vérifications et il ne semble pas que les choses aient beaucoup changé pour ASP.NET MVC 4.0 en ce qui concerne les attributs des contrôleurs.
Pour vos questions:
Comment ça marche? Les références suivantes résument assez bien les choses. Authentifier les utilisateurs avec l'authentification Windows (C #) n'est PAS tout à fait correct pour ASP.NET MVC 4.0, mais il a un certain arrière-plan.
Comment créer un site intranet à l'aide d'ASP.NET MVC est destiné à ASP.NET MVC 3.0.
Je suis trop nouveau pour publier plus de deux liens. Vous devrez donc rechercher dans MSDN "AuthorizeAttribute Class" pour .NET Framework 4.
Quels paramètres pour web.config? - Je viens de me souvenir d'avoir changé un élément, le "mode d'authentification".
En ce qui concerne les tests, les versions de mon système d'exploitation Windows correspondaient mieux et ma machine de développement se trouvait sur le même domaine Windows. Mais si je me souviens bien, cela a juste fonctionné. YMMV , mais je me souviens avoir envisagé de mettre en œuvre ma propre autorisation. C’est peut-être une solution pour votre cas, de lancer votre propre projet, puis de passer à l’authentification Windows en production. Mais je suggérerais quelques tests avec un serveur de test si vous pouvez en configurer un sur le domaine de la société.