Partager via


Comment utiliser le code managé (C#) pour créer un fournisseur d’authentification FTP simple

par Robert McMurray

Microsoft a créé un service FTP entièrement réécrit pour Windows Server® 2008. Ce nouveau service FTP intègre de nombreuses nouvelles fonctionnalités qui permettent aux auteurs Web de publier du contenu plus facilement qu’auparavant. Il offre également aux administrateurs Web davantage d’options de sécurité et de déploiement.

Le nouveau service FTP 7.5 prend en charge l'extensibilité qui vous permet d'étendre les fonctionnalités intégrées au service FTP. Plus précisément, FTP 7.5 prend en charge de la création de vos propres fournisseurs d'authentification. Vous pouvez également créer des fournisseurs pour la journalisation FTP personnalisée et pour déterminer les informations de répertoire de base de vos utilisateurs FTP.

Cette procédure détaillée vous guide tout au long des étapes d'utilisation du code managé pour créer un fournisseur d'authentification FTP simple.

Prérequis

Les éléments suivants sont nécessaires pour effectuer les procédures décrites dans cet article :

  1. IIS 7.0 ou version ultérieure doit être installé sur votre serveur Windows Server 2008, et le Gestionnaire Internet Information Services (IIS) doit également être installé.

  2. Le nouveau service FTP 7.5 doit être installé.

  3. Vous devez créer un dossier racine pour la publication FTP.

  4. Vous devez utiliser Visual Studio 2008.

    Remarque

    Si vous utilisez une version antérieure de Visual Studio, certaines des étapes décrites dans cette procédure détaillée peuvent ne pas être correctes.

Étape 1 : Configurer l'environnement de projet

Dans cette étape, vous allez créer un projet dans Visual Studio 2008 pour le fournisseur de version de démonstration.

  1. Ouvrez Microsoft Visual Studio 2008.

  2. Cliquez sur le menu Fichier, puis Nouveau, puis Projet.

  3. Dans la boîte de dialogue Nouveau projet :

    • Choisissez Visual C# comme type de projet.
    • Choisissez Class Library comme modèle.
    • Tapez FtpAuthenticationDemo comme nom du projet.
    • Cliquez sur OK.
  4. Lorsque le projet s’ouvre, ajoutez un chemin d’accès de référence à la bibliothèque d’extensibilité FTP :

    • Cliquez sur Project, puis sur Propriétés FtpAuthenticationDemo.

    • Cliquez sur l’onglet Chemins d’accès de référence.

    • Saisissez le chemin d'accès à l'assembly d'extensibilité FTP pour votre version de Windows, où le disque local C: est votre lecteur de système d'exploitation :

      • Pour Windows Server 2008 et Windows Vista : C:\Windows\assembly\GAC\_MSIL\Microsoft.Web.FtpServer\7.5.0.0\_\_31bf3856ad364e35
      • Pour Windows 7 : C:\Program Files\Reference Assemblies\Microsoft\IIS
    • Cliquez sur Ajouter un dossier.

  5. Ajoutez une clé de nom fort au projet :

    • Cliquez sur Project, puis sur Propriétés FtpAuthenticationDemo.
    • Cliquez sur l'onglet Signature .
    • Sélectionnez la case à cocher Signer l'assembly.
    • Choisissez <Nouveau...> dans la liste déroulante du nom fort de la clé.
    • Entrez FtpAuthenticationDemoKey pour le nom du fichier de clé.
    • Si vous le souhaitez, saisissez un mot de passe pour le fichier de clé. Au cas contraire, décochez la case Protéger mon fichier de clé avec un mot de passe.
    • Cliquez sur OK.
  6. Facultatif : vous pouvez ajouter un événement de build personnalisé pour ajouter automatiquement la DLL au Global Assembly Cache (GAC) sur votre ordinateur de développement :

    • Cliquez sur Project, puis sur Propriétés FtpAuthenticationDemo.

    • Sélectionnez l’onglet Événements de build.

    • Dans la boîte de dialogue Ligne de commande de l'événement post-build, saisissez la commande suivante :

      net stop ftpsvc
      call "%VS90COMNTOOLS%\vsvars32.bat">null
      gacutil.exe /if "$(TargetPath)"
      net start ftpsvc
      
  7. Enregistrez le projet.

Étape 2 : Créer la classe d'extensibilité

Dans cette étape, vous allez implémenter les interfaces d'extensibilité pour le fournisseur de démonstration.

  1. Ajoutez une référence à la bibliothèque d'extensibilité FTP pour le projet :

    • Cliquez sur Projet, puis sur Ajouter une référence
    • Sous l’onglet .NET, cliquez sur Microsoft.Web.FtpServer.
    • Cliquez sur OK.
  2. Ajoutez une référence à System.Web pour le projet :

    • Cliquez sur Projet, puis sur Ajouter une référence
    • Sous l’onglet .NET, cliquez sur System.Web.
    • Cliquez sur OK.
  3. Ajoutez le code de la classe d'authentification :

    • Dans l’Explorateur de solutions, double-cliquez sur le fichier Class1.cs.

    • Supprimez le code existant.

    • Collez le code suivant dans l’éditeur :

      using System;
      using Microsoft.Web.FtpServer;
      
      namespace FtpAuthentication
      {
          public class FtpAuthDemo : BaseProvider,
              IFtpAuthenticationProvider,
              IFtpRoleProvider
          {
              bool IFtpAuthenticationProvider.AuthenticateUser(
                  string sessionId,
                  string siteName,
                  string userName,
                  string userPassword,
                  out string canonicalUserName)
              {
                  // Note: You would add your own custom logic here.
                  canonicalUserName = userName;
                  string strUserName = "MyUser";
                  string strPassword = "MyPassword";
      
                  // Verify that the user name and password are valid.
                  // Note: In this example, the user name is case-insensitive
                  // and the password is case-sensitive.
                  if (((userName.Equals(strUserName,
                      StringComparison.OrdinalIgnoreCase))==true) &&
                      userPassword == strPassword)
                  {
                      return true;
                  }
                  else
                  {
                      return false;
                  }
              }
              bool IFtpRoleProvider.IsUserInRole(
                  string sessionId,
                  string siteName,
                  string userName,
                  string userRole)
              {
                  // Note: You would add your own custom logic here.
                  string strUserName = "MyUser";
                  string strRoleName = "MyRole";
      
                  // Verify that the user name and role name are valid.
                  // Note: In this example, both the user name and
                  // the role name are case-insensitive.
                  if (((userName.Equals(strUserName,
                      StringComparison.OrdinalIgnoreCase))==true) &&
                      ((userRole.Equals(strRoleName,
                      StringComparison.OrdinalIgnoreCase))==true))
                  {
                      return true;
                  }
                  else
                  {
                      return false;
                  }
              }
          }
      }
      
  4. Enregistrez et compilez le projet.

Remarque

Si vous n'avez pas utilisé les étapes facultatives pour inscrire les assemblys dans le GAC, vous devez copier manuellement les assemblys sur votre ordinateur IIS et ajouter les assemblys au GAC à l'aide de l'outil Gacutil.exe. Pour en savoir plus, consultez l'articleGacutil.exe (Outil Global Assembly Cache).

Étape 3 : Ajouter le fournisseur d’authentification au protocole FTP

Dans cette étape, vous allez ajouter le fournisseur de démonstration à votre service FTP et au site Web par défaut.

  1. Déterminez les informations d'assembly pour le fournisseur d'extensibilité :

    • Dans l'Explorateur Windows, ouvrez votre chemin d'accès C:\Windows\assembly, où le disque local C: est votre lecteur de système d'exploitation.
    • Localisez l’assembly FtpAuthenticationDemo.
    • Cliquez avec le bouton droit sur l'assembly, puis cliquez sur Propriétés.
    • Copiez la valeur Culture ; par exemple, Neutre.
    • Copiez le numéro de version, par exemple 1.0.0.0.
    • Copiez la valeur du jeton de clé publique, par exemple 426f62526f636b73.
    • Cliquez sur Annuler.
  2. Ajoutez le fournisseur d’extensibilité à la liste globale des fournisseurs d’authentification FTP :

    • Ouvrez le Gestionnaire Internet Information Services (IIS).
    • Cliquez sur le nom de votre ordinateur dans le volet Connexions.
    • Double-cliquez sur Authentification FTP dans la fenêtre principale.
    • Cliquez sur Fournisseurs personnalisés dans le volet Actions.
    • Cliquez sur S'inscrire.
    • Entrez FtpAuthenticationDemo pour le Nom du fournisseur.
    • Cliquez sur Fournisseur managé (.NET).
    • Saisissez les informations d'assembly pour le fournisseur d'extensibilité à l'aide des informations que vous avez copiées précédemment. Par exemple :
      FtpAuthentication.FtpAuthDemo,FtpAuthenticationDemo,version=1.0.0.0,Culture=neutral,PublicKeyToken=426f62526f636b73
    • Cliquez sur OK.
    • Désactivez la case à cocher FtpAuthenticationDemo dans la liste des fournisseurs.
    • Cliquez sur OK.
  3. Ajoutez le fournisseur d’authentification personnalisé pour un site FTP :

    • Ouvrez un site FTP dans le Gestionnaire Internet Information Services (IIS).
    • Double-cliquez sur Authentification FTP dans la fenêtre principale.
    • Cliquez sur Fournisseurs personnalisés dans le volet Actions.
    • Vérifiez FtpAuthenticationDemo dans la liste des fournisseurs.
    • Cliquez sur OK.
  4. Ajoutez une règle d’autorisation pour le fournisseur d’authentification :

    • Double-cliquez sur Règles d’autorisation FTP dans la fenêtre principale.

    • Dans le volet Actions, cliquez sur Ajouter une règle d'autorisation.

    • Vous pouvez ajouter l’une des règles d’autorisation suivantes :

      • Pour un utilisateur spécifique :

        • Sélectionnez Utilisateurs spécifiés pour l’option d’accès.
        • Tapez « MyUser » pour le nom d’utilisateur.
      • Pour un rôle ou un groupe :

        • Sélectionnez Rôles ou groupes d’utilisateurs spécifiés pour l’option d’accès.
        • Tapez « MyRole » pour le nom du rôle.
    • Sélectionnez Lecture et Écriture pour l’option Autorisations.

    • Cliquez sur OK.

Résumé

Dans cette procédure détaillée, vous avez appris à :

  • Créer un projet dans Visual Studio 2008 pour un fournisseur d’authentification FTP personnalisé.
  • Implémenter l’interface d’extensibilité pour l’authentification FTP personnalisée.
  • Ajouter un fournisseur d’authentification personnalisé à votre service FTP.

Lorsque les utilisateurs se connectent à votre site FTP, le service FTP tente d’authentifier les utilisateurs auprès de votre fournisseur d’authentification personnalisé. Si cette tentative échoue, le service FTP utilise d’autres fournisseurs intégrés ou d’authentification pour authentifier les utilisateurs.