Partager via


Authentification des utilisateurs avec l’authentification Windows (C#)

par Microsoft

Découvrez comment utiliser Authentification Windows dans le contexte d’une application MVC. Vous allez apprendre à activer Authentification Windows dans le fichier de configuration web de votre application et à configurer l’authentification avec IIS. Enfin, vous allez apprendre à utiliser l’attribut [Authorize] pour restreindre l’accès aux actions du contrôleur à des utilisateurs ou des groupes Windows spécifiques.

L’objectif de ce tutoriel est d’expliquer comment tirer parti des fonctionnalités de sécurité intégrées à Internet Information Services pour protéger les vues de vos applications MVC par mot de passe. Vous apprenez à autoriser les actions du contrôleur à être appelées uniquement par des utilisateurs Windows particuliers ou des utilisateurs membres de groupes Windows particuliers.

L’utilisation de Authentification Windows est logique lorsque vous créez un site web interne d’entreprise (un site intranet) et que vous souhaitez que vos utilisateurs puissent utiliser leurs noms d’utilisateur et mots de passe Windows standard lors de l’accès au site web. Si vous créez un site web orienté vers l’extérieur (un site Internet), envisagez d’utiliser l’authentification par formulaire à la place.

Activation de l’authentification Windows

Lorsque vous créez une application ASP.NET MVC, Authentification Windows n’est pas activée par défaut. L’authentification par formulaire est le type d’authentification par défaut activé pour les applications MVC. Vous devez activer Authentification Windows en modifiant le fichier de configuration web (web.config) de votre application MVC. Recherchez la <section d’authentification> et modifiez-la pour utiliser Windows au lieu de l’authentification par formulaire comme suit :

<authentication mode="Windows">

</authentication>

Lorsque vous activez Authentification Windows, votre serveur web devient responsable de l’authentification des utilisateurs. En règle générale, il existe deux types différents de serveurs web que vous utilisez lors de la création et du déploiement d’une application ASP.NET MVC.

Tout d’abord, lors du développement d’une application MVC, vous utilisez le serveur web de développement ASP.NET inclus dans Visual Studio. Par défaut, le serveur web de développement ASP.NET exécute toutes les pages dans le contexte du compte Windows actuel (quel que soit le compte que vous avez utilisé pour vous connecter à Windows).

Le serveur web de développement ASP.NET prend également en charge l’authentification NTLM. Vous pouvez activer l’authentification NTLM en cliquant avec le bouton droit sur le nom de votre projet dans la fenêtre Explorateur de solutions et en sélectionnant Propriétés. Ensuite, sélectionnez l’onglet Web et case activée la case à cocher NTLM (voir la figure 1).

Figure 1 : Activation de l’authentification NTLM pour le serveur web de développement ASP.NET

clip_image002

Pour une application web de production, vous utilisez IIS comme serveur web. IIS prend en charge plusieurs types d’authentification, notamment :

  • Authentification de base : définie dans le cadre du protocole HTTP 1.0. Envoie les noms d’utilisateur et les mots de passe en texte clair (encodé en base64) sur Internet. - Authentification Digest : envoie un hachage d’un mot de passe, au lieu du mot de passe lui-même, sur Internet. - Authentification Windows intégrée (NTLM) : le meilleur type d’authentification à utiliser dans les environnements intranet à l’aide de Windows. - Authentification par certificat : active l’authentification à l’aide d’un certificat côté client. Le certificat est mappé à un compte d’utilisateur Windows.

Notes

Pour obtenir une vue d’ensemble plus détaillée de ces différents types d’authentification, consultez https://msdn.microsoft.com/library/aa292114(VS.71).aspx.

Vous pouvez utiliser le Gestionnaire des services Internet pour activer un type particulier d’authentification. N’oubliez pas que tous les types d’authentification ne sont pas disponibles dans le cas de tous les systèmes d’exploitation. En outre, si vous utilisez IIS 7.0 avec Windows Vista, vous devez activer les différents types de Authentification Windows avant qu’ils n’apparaissent dans le Gestionnaire des services Internet. Ouvrez Panneau de configuration, Programmes, programmes et fonctionnalités, activez ou désactivez les fonctionnalités Windows, puis développez le nœud Internet Information Services (voir la figure 2).

Figure 2 – Activation des fonctionnalités IIS de Windows

clip_image004

À l’aide d’Internet Information Services, vous pouvez activer ou désactiver différents types d’authentification. Par exemple, la figure 3 illustre la désactivation de l’authentification anonyme et l’activation de l’authentification Windows intégrée (NTLM) lors de l’utilisation d’IIS 7.0.

Figure 3 – Activation de l’authentification Windows intégrée

clip_image006

Autorisation d’utilisateurs et de groupes Windows

Après avoir activé Authentification Windows, vous pouvez utiliser l’attribut [Authorize] pour contrôler l’accès aux contrôleurs ou aux actions du contrôleur. Cet attribut peut être appliqué à un contrôleur MVC entier ou à une action de contrôleur particulière.

Par exemple, le contrôleur de base dans la liste 1 expose trois actions nommées Index(), CompanySecrets() et StephenSecrets(). Tout le monde peut appeler l’action Index(). Toutefois, seuls les membres du groupe Gestionnaires locaux Windows peuvent appeler l’action CompanySecrets(). Enfin, seul l’utilisateur de domaine Windows nommé Stephen (dans le domaine Redmond) peut appeler l’action StephenSecrets().

Listing 1 – Controllers\HomeController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MvcApplication1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [Authorize(Roles = "Managers")]
        public ActionResult CompanySecrets()
        {
            return View();
        }

        [Authorize(Users="redmond\\swalther")]
        public ActionResult StephenSecrets()
        {
            return View();
        }



    }
}

Notes

En raison du contrôle de compte d’utilisateur Windows, lorsque vous utilisez Windows Vista ou Windows Server 2008, le groupe Administrateurs local se comporte différemment des autres groupes. L’attribut [Authorize] ne reconnaît pas correctement un membre du groupe Administrateurs local, sauf si vous modifiez les paramètres de contrôle d’utilisateur de votre ordinateur.

Ce qui se passe exactement lorsque vous tentez d’appeler une action de contrôleur sans avoir les autorisations appropriées dépend du type d’authentification activé. Par défaut, lorsque vous utilisez le serveur de développement ASP.NET, vous obtenez simplement une page vierge. La page est traitée avec un état de réponse HTTP non autorisé 401 .

Si, en revanche, vous utilisez IIS avec l’authentification anonyme désactivée et l’authentification de base activée, vous continuez à recevoir une invite de boîte de dialogue de connexion chaque fois que vous demandez la page protégée (voir la figure 4).

Figure 4 – Boîte de dialogue de connexion d’authentification de base

clip_image008

Résumé

Ce tutoriel a expliqué comment utiliser Authentification Windows dans le contexte d’une application ASP.NET MVC. Vous avez appris à activer Authentification Windows dans le fichier de configuration web de votre application et à configurer l’authentification avec IIS. Enfin, vous avez appris à utiliser l’attribut [Authorize] pour restreindre l’accès aux actions du contrôleur à des utilisateurs ou des groupes Windows spécifiques.