Initialisierung des Authentifizierungsprotokolls
Die von EAP gesicherte Verbindung wird zwischen Client und Server auf ähnliche Weise für RAS- und Drahtlose Clients (802.1X) initialisiert.
Client
Wenn der Client versucht, die Verbindung herzustellen, ruft der Authentifizierungsdienst Identitätsinformationen für den Benutzer ab. Wenn der wert RAS_EAP_VALUENAME_INVOKE_NAMEDLG in der Registrierung für dieses Authentifizierungsprotokoll vorhanden ist und dieser Wert auf Null festgelegt ist, ruft der Authentifizierungsdienst RasEapGetIdentity auf. Diese Funktion zeigt in der Regel eine Benutzeroberfläche an, mit der die Identitätsinformationen einen für das Authentifizierungsprotokoll spezifischen Typ aufweisen können. z. B. ein Zertifikat oder eine numerische ID. Wenn RAS_EAP_VALUENAME_INVOKE_NAMEDLG nicht vorhanden oder auf 1 festgelegt ist, zeigt der Authentifizierungsdienst das Dialogfeld Standardbenutzername des Systems an.
Nachdem der Authentifizierungsdienst die Identitätsinformationen für den Benutzer abgerufen hat, ruft er die Implementierung von RasEapBegin des Authentifizierungsprotokolls auf. Mit diesem Aufruf kann das Authentifizierungsprotokoll einen Arbeitspuffer zuordnen und initialisieren, den der Dienst bei nachfolgenden Aufrufen von RasEapMakeMessage und RasEapEnd übergibt. Der Arbeitspuffer ist für den Dienst undurchsichtig und greift nie auf den Inhalt des Arbeitspuffers zu. Wenn das Authentifizierungsprotokoll einen separaten Arbeitspuffer für jede EAP-Sitzung erstellt, ist der Arbeitspuffer sitzungs- und threadsicher. Da das Authentifizierungsprotokoll den Arbeitsspeicher für den Arbeitspuffer zuweist, sollte das Authentifizierungsprotokoll diesen Arbeitsspeicher auch mithilfe der RasEapFreeMemory-Funktion freigeben.
Beim Aufruf von RasEapBegin übergibt der Dienst auch eine PPP_EAP_INPUT-Struktur , die Zeiger auf die Konfigurationsinformationen für die Verbindung und die Identitätsinformationen für den Benutzer enthält. Der Dienst übergibt immer einen Wert für das pszIdentity-Element von PPP_EAP_INPUT. Das pszPassword-Element von PPP_EAP_INPUT kann jedoch NULL sein.
Innerhalb der PPP_EAP_INPUT-Struktur gibt der fAuthenticator-Member an, ob das Authentifizierungsprotokoll zur Authentifizierung (auf dem Client) oder als Authentifikator (auf dem Server) aufgerufen wird.
Server
Auf dem Server gibt das bInitialID-Mitglied von PPP_EAP_INPUT die ID an, die der Server für das erste EAP-Paket verwendet. Der Server erhöht diese ID für nachfolgende Pakete.
Auch auf dem Server zeigt der pUserAttributes-Zeiger in PPP_EAP_INPUT auf ein Array von Attributen des RAS_AUTH_ATTRIBUTE_TYPE-Typs . Dies sind Attribute für den Benutzer, die vom Client abgerufen wurden.
Wenn der RasEapBegin-Aufruf einen anderen Wert als NO_ERROR zurückgibt, wird die Sitzung getrennt. Der zurückgegebene Fehler wird protokolliert (auf dem Server) oder dem Benutzer (auf dem Client) angezeigt.