Initialisation du protocole d’authentification
La connexion sécurisée EAP est initialisée entre le client et le serveur de manière similaire pour les clients RAS et sans fil (802.1X).
Client
Lorsque le client tente d’établir la connexion, le service d’authentification obtient les informations d’identité de l’utilisateur. Si la valeur RAS_EAP_VALUENAME_INVOKE_NAMEDLG est présente dans le Registre pour ce protocole d’authentification et que cette valeur est définie sur zéro, le service d’authentification appelle RasEapGetIdentity. Cette fonction affiche généralement une interface utilisateur qui permet aux informations d’identité d’être d’un type spécifique au protocole d’authentification ; par exemple, un certificat ou un ID numérique. Si RAS_EAP_VALUENAME_INVOKE_NAMEDLG n’est pas présent ou est défini sur un, le service d’authentification affiche la boîte de dialogue nom d’utilisateur système standard.
Une fois que le service d’authentification a obtenu les informations d’identité de l’utilisateur, il appelle l’implémentation du protocole d’authentification de RasEapBegin. Cet appel permet au protocole d’authentification d’allouer et d’initialiser une mémoire tampon de travail que le service transmet aux appels suivants à RasEapMakeMessage et RasEapEnd. La mémoire tampon de travail est opaque pour le service et n’accède jamais au contenu de la mémoire tampon de travail. Si le protocole d’authentification crée une mémoire tampon de travail distincte pour chaque session EAP, la mémoire tampon de travail est session et thread safe. Étant donné que le protocole d’authentification alloue la mémoire pour la mémoire tampon de travail, le protocole d’authentification doit également libérer cette mémoire à l’aide de la fonction RasEapFreeMemory .
Dans l’appel à RasEapBegin, le service transmet également une structure de PPP_EAP_INPUT qui contient des pointeurs vers les informations de configuration de la connexion et les informations d’identité de l’utilisateur. Le service transmet toujours une valeur pour le membre pszIdentity de PPP_EAP_INPUT. Toutefois, le membre pszPassword de PPP_EAP_INPUT peut avoir la valeur NULL.
Dans la structure PPP_EAP_INPUT , le membre fAuthenticator indique si le protocole d’authentification est appelé pour être authentifié (sur le client) ou comme authentificateur (sur le serveur).
Serveur
Sur le serveur, le membre bInitialID de PPP_EAP_INPUT spécifie l’ID que le serveur utilise pour le premier paquet EAP. Le serveur incrémente cet ID pour les paquets suivants.
Également sur le serveur, le pointeur pUserAttributes dans PPP_EAP_INPUT pointe vers un tableau d’attributs du type RAS_AUTH_ATTRIBUTE_TYPE . Il s’agit d’attributs pour l’utilisateur qui ont été obtenus à partir du client.
Si l’appel RasEapBegin retourne une valeur autre que NO_ERROR, la session est déconnectée. L’erreur retournée est journalisée (sur le serveur) ou affichée à l’utilisateur (sur le client).