Authentification – Exemples en C#

Dans cet article, vous trouverez un exemple simple de création d’un gestionnaire de messages personnalisé pour une requête Web avec des schémas d’authentification basés sur des mots de passe tels que basic, digest, NTLM et Kerberos.

L’authentification est le processus qui permet de déterminer si un client a le droit d’accéder à une ressource. Le protocole HTTP prend en charge l’authentification comme moyen de négocier l’accès à une ressource protégée. Il vérifie tout d’abord les informations d’identification de l’utilisateur (nom d’utilisateur et mot de passe). Si les deux sont corrects, l’utilisateur peut entrer dans le système. Plusieurs schémas d’authentification pour HTTP sont décrits brièvement ici : authentification de base, digest, NTLM et Kerberos.

Création d’un gestionnaire de messages pour l’authentification de base HTTP

L’authentification de base est une méthode permettant à un agent utilisateur HTTP (tel qu’un navigateur web) de fournir un nom d’utilisateur et un mot de passe lors d’une requête. Nous allons créer un gestionnaire personnalisé que vous pourrez utiliser pour l’authentification de base. Suivez les étapes suivantes :

  1. Utilisez l’espace de nommage nécessaire, à savoir Aspose.Html.Net.
  2. Définissez votre propre classe CredentialHandler qui sera dérivée de la classe MessageHandler.
  3. Surchargez la méthode Invoke() pour mettre en œuvre le comportement du gestionnaire de messages personnalisé.

L’extrait de code suivant montre comment créer un CredentialHandler pour accéder à une source distante avec autorisation en utilisant l’authentification de base HTTP :

 1// Use CredentialHandler for basic authentication
 2
 3// This message handler used basic autentifications request
 4public class CredentialHandler : MessageHandler
 5{
 6    // Override the Invoke() method
 7    public override void Invoke(INetworkOperationContext context)
 8    {
 9        context.Request.Credentials = new NetworkCredential("username", "securelystoredpassword");
10        context.Request.PreAuthenticate = true;
11
12        Next(context);
13    }
14}

Il transmet NetworkCredential à un objet Web Request, qui l’utilise pour authentifier les demandes adressées à un serveur Internet.

Ajout du CredentialHandler au pipeline

Le concept clé du travail des gestionnaires de messages est de les enchaîner les uns aux autres. Nous avons créé le CredentialHandler et nous devons l’ajouter au pipeline pour implémenter l’exemple de l’authentification HTTP Basic. Considérons l’exemple C# suivant :

 1// Authenticate and load protected HTML with custom configuration using C#
 2
 3// Create an instance of the Configuration class
 4using Configuration configuration = new Configuration();
 5
 6// Add the CredentialHandler to the chain of existing message handlers
 7INetworkService service = configuration.GetService<INetworkService>();
 8MessageHandlerCollection handlers = service.MessageHandlers;
 9handlers.Insert(0, new CredentialHandler());
10
11// Initialize an HTML document with specified configuration
12using HTMLDocument document = new HTMLDocument("https://httpbin.org/basic-auth/username/securelystoredpassword", configuration);

Le constructeur Configuration() initialise une instance de la classe Configuration. Une fois la configuration créée, les méthodes GetService<INetworkService>() et MessageHandlers.Insert() sont invoquées. La méthode Insert() ajoute le CredentialHandler à la première place dans la collection de gestionnaires de messages. Utilisez le constructeur HTMLDocument(url, configuration) pour initialiser un document HTML et implémenter l’exemple d’authentification de base HTTP.

Schémas d’authentification

Authentification de base – Basic Authentication

L’authentification de base est une méthode d’authentification standard prise en charge par les serveurs HTTP et presque tous les navigateurs web, ce qui en fait une excellente méthode de contrôle d’accès.

Cependant, l’inconvénient majeur de l’authentification de base est que le nom d’utilisateur et le mot de passe du client sont transférés en texte clair encodé en Base64. Base64 n’est pas une forme de cryptage et doit être considéré comme l’envoi du nom d’utilisateur et du mot de passe en clair. Par conséquent, si une ressource doit être protégée, il est fortement recommandé d’utiliser un schéma d’authentification autre que l’authentification de base.

Digeste – Digest

L’authentification Digest est une méthode d’authentification qu’un serveur web peut utiliser pour négocier des informations d’identification, telles qu’un nom d’utilisateur ou un mot de passe, avec le navigateur web de l’utilisateur. Elle est destinée à remplacer l’authentification de base. L’authentification Digest applique une fonction de hachage au nom d’utilisateur et au mot de passe avant de les envoyer sur le réseau. Le hachage des données rend plus difficile le vol et la réutilisation des informations d’identification d’un utilisateur dans le cadre de ce système d’authentification. Il peut être utilisé pour vérifier l’identité d’un utilisateur avant d’envoyer des informations sensibles telles que l’historique des transactions bancaires en ligne.

NTLM

L’authentification NTLM (New Technology LAN Manager) est un schéma défi-réponse qui est une version plus sûre de l’authentification Digest. NTLM utilise les informations d’identification Windows pour convertir les données de la demande au lieu d’un nom d’utilisateur et d’un mot de passe non codés. L’authentification NTLM nécessite plusieurs échanges entre le client et le serveur. Le serveur et les mandataires intermédiaires doivent maintenir des connexions persistantes pour que l’authentification soit réussie.

Kerberos

Kerberos est un protocole d’authentification de réseau informatique. Il est développé pour fournir une authentification forte pour les requêtes client/serveur en utilisant la cryptographie à clé secrète. Il a été créé par le MIT pour résoudre les problèmes de sécurité des réseaux. Le protocole Kerberos est considéré comme sûr. Il est largement utilisé depuis des décennies et s’est avéré sûr en tant que mécanisme d’authentification des utilisateurs. Kerberos utilise une cryptographie forte pour protéger les données sensibles.

Le nom Kerberos est tiré de la mythologie grecque. Kerberos était un chien à trois têtes qui gardait les portes de l’Hadès. Les trois têtes du protocole Kerberos représentent le client, la ressource réseau et le centre de distribution de clés (KDC), qui est un service d’authentification Kerberos tiers de confiance.

Vous pouvez télécharger les exemples complets et les fichiers de données sur GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.