Transaction d’authentification de la DLL de sécurité RAS
Windows le serveur RAS NT/Windows 2000 appelle la fonction RasSecurityDialogBegin de la DLL de sécurité pour commencer l’authentification d’un utilisateur distant. Le serveur RAS est bloqué et ne peut accepter aucun autre appel tant que RasSecurityDialogBegin n’est pas retourné. Pour cette raison, RasSecurityDialogBegin doit copier les paramètres d’entrée, créer un thread pour effectuer l’authentification et retourner le plus rapidement possible.
Le thread créé par la DLL de sécurité utilise les fonctions RasSecurityDialogSend et RasSecurityDialogReceive pour communiquer avec l’ordinateur distant. Ces fonctions ne sont pas disponibles pour une importation statique à partir d’une bibliothèque. Au lieu de cela, la DLL de sécurité doit utiliser les fonctions LoadLibrary et GetProcAddress pour établir une liaison dynamique à ces fonctions dans RASMAN.DLL.
Pendant une transaction d’authentification, le gestionnaire de connexions RAS sur l’ordinateur distant affiche une fenêtre de terminal. Le thread de la DLL de sécurité appelle RasSecurityDialogSend pour envoyer un message à afficher dans la fenêtre de terminal. Le thread appelle ensuite RasSecurityDialogReceive pour recevoir l’entrée que l’utilisateur distant tape dans la fenêtre de terminal. Le thread peut effectuer un nombre quelconque d’appels RasSecurityDialogSend , avec chaque appel suivi d’un appel RasSecurityDialogReceive . Après chaque appel à RasSecurityDialogReceive, le thread doit appeler l’une des fonctions d’attente, telles que WaitForSingleObject, pour attendre que les opérations d’envoi et de réception asynchrones soient terminées. Le serveur RAS signale un objet d’événement lorsque l’opération de réception est terminée ou lorsqu’un délai d’attente facultatif s’est écoulé.
Lorsque le thread a terminé l’authentification de l’utilisateur distant, il appelle la fonction RasSecurityDialogComplete . Cet appel passe une structure de _ message de sécurité contenant les résultats de la transaction d’authentification au serveur RAS. Le serveur RAS effectue ensuite une séquence de nettoyage qui comprend un appel à la fonction RasSecurityDialogEnd de la dll. Cela donne à la DLL de sécurité la possibilité d’effectuer tout nettoyage nécessaire.
La DLL de sécurité peut appeler la fonction RasSecurityDialogGetInfo pour récupérer des informations sur le port associé à une transaction d’authentification. RasSecurityDialogGetInfo remplit une structure d' _ _ informations de sécurité RAS qui indique l’état du dernier appel RasSecurityDialogReceive pour le port.