Udostępnij przez


Inicjowanie protokołu uwierzytelniania

Zabezpieczone połączenie protokołu EAP jest inicjowane między klientem a serwerem w podobny sposób dla klientów RAS i bezprzewodowych (802.1X).

Klient

Gdy klient próbuje nawiązać połączenie, usługa uwierzytelniania uzyskuje informacje o tożsamości dla użytkownika. Jeśli wartość RAS_EAP_VALUENAME_INVOKE_NAMEDLG znajduje się w rejestrze dla tego protokołu uwierzytelniania i ta wartość jest ustawiona na zero, usługa uwierzytelniania wywołuje RasEapGetIdentity. Ta funkcja zazwyczaj wyświetla interfejs użytkownika, który umożliwia uzyskanie informacji o tożsamości jako typu specyficznego dla protokołu uwierzytelniania; na przykład certyfikat lub identyfikator liczbowy. Jeśli RAS_EAP_VALUENAME_INVOKE_NAMEDLG nie istnieje lub jest ustawiona na jedną, usługa uwierzytelniania wyświetla standardowe okno dialogowe nazwy użytkownika systemu.

Po uzyskaniu informacji o tożsamości użytkownika usługa uwierzytelniania wywołuje implementację protokołu uwierzytelniania RasEapBegin. To wywołanie umożliwia protokołowi uwierzytelniania przydzielanie i inicjowanie buforu roboczego przekazywanego przez usługę na kolejne wywołania do RasEapMakeMessage i RasEapEnd. Bufor pracy jest nieprzezroczystym dla usługi i nigdy nie uzyskuje dostępu do zawartości buforu pracy. Jeśli protokół uwierzytelniania tworzy odrębny bufor pracy dla każdej sesji protokołu EAP, bufor pracy jest bezpieczny dla sesji i wątku. Ponieważ protokół uwierzytelniania przydziela pamięć dla buforu roboczego, protokół uwierzytelniania powinien również zwolnić tę pamięć przy użyciu funkcji RasEapFreeMemory.

W wywołaniu polecenia RasEapBeginusługa przekazuje również PPP_EAP_INPUT strukturę zawierającą wskaźniki do informacji o konfiguracji połączenia oraz informacje o tożsamości użytkownika. Usługa zawsze przekazuje wartość elementu pszIdentity elementu członkowskiego PPP_EAP_INPUT. Jednak elementu członkowskiego PPP_EAP_INPUT pszPassword może być null.

W strukturze PPP_EAP_INPUT element członkowski fAuthenticator wskazuje, czy protokół uwierzytelniania jest wywoływany do uwierzytelnienia (na kliencie) lub jako wystawca uwierzytelnienia (na serwerze).

Serwer

Na serwerze bInitialID elementu członkowskiego PPP_EAP_INPUT określa identyfikator używany przez serwer dla pierwszego pakietu protokołu EAP. Serwer zwiększa ten identyfikator dla kolejnych pakietów.

Również na serwerze pUserAttributes wskaźnik w PPP_EAP_INPUT wskazuje tablicę atrybutów typu RAS_AUTH_ATTRIBUTE_TYPE. Są to atrybuty dla użytkownika uzyskanego od klienta.

Jeśli wywołanie RasEapBegin zwraca dowolną wartość inną niż NO_ERROR, sesja zostanie rozłączona. Zwrócony błąd jest rejestrowany (na serwerze) lub wyświetlany użytkownikowi (na kliencie).