Udostępnij przez


Implementowanie mechanizmu EAPHost LEAP

W tym temacie opisano mechanizm EAPHost, który umożliwia osobom trzecim pisanie modułów Lightweight Extensible Authentication Protocol (LEAP) dla systemu Windows. LEAP to starsza metoda uwierzytelniania utworzona przez firmę Cisco zgodnie z RFC 3748. Aby uzyskać więcej informacji na temat programu LEAP, zobacz Cisco LEAP Q&A.

Proces uwierzytelniania EAPHost

Zwykły proces uwierzytelniania EAPHost odbywa się w następujący sposób:

  • Uwierzytelniacz wysyła żądanie uwierzytelnienia partnera. Na przykład aplikacja wywołuje EapHostPeerBeginSession z konfiguracją EAPHost i danymi użytkownika.
  • Element równorzędny wysyła pakiet odpowiedzi w odpowiedzi na prawidłowe żądanie. Na przykład pomyślne wywołanie zwraca uchwyt sesji EAP_SESSION_HANDLE.
  • Wystawca uwierzytelniania wysyła dodatkowy pakiet żądania, a element równorzędny odpowiada za pomocą odpowiedzi. Na przykład aplikacja wywołuje EapHostPeerGetSendPacket w celu uzyskania pakietów EAP odebranych przez EAPHost podczas całej sesji. Każdy pakiet jest przetwarzany przez wywołanie EapHostPeerProcessReceivedPacket.
  • EapHostPeerProcessReceivedPacket zawsze zwraca kod akcji. Klient musi następnie wywołać funkcję odpowiadającą kodowi akcji.
  • Sekwencja żądań i odpowiedzi trwa tak długo, jak to konieczne. Na przykład aplikacja może wywołać EapHostPeerGetResponseAttributes, żądając dostępnych atrybutów EAP, a równorzędny odpowiada za pomocą EapHostPeerSetResponseAttributes, aby je zwrócić.
  • Po początkowym żądaniu nie można wysłać nowego żądania, dopóki nie zostanie odebrana prawidłowa odpowiedź.
  • Rozmowa trwa do momentu, gdy autentykator nie może uwierzytelnić peera, w którym to przypadku implementacja autentykatora musi wysłać komunikat o błędzie EAP. Na przykład niedopuszczalne odpowiedzi na co najmniej jedno żądanie spowodowałyby, że wystawca uwierzytelniający przesyła kod błędu 4 EAP.
  • Alternatywnie, konwersacja uwierzytelniania może być kontynuowana, dopóki autentykator nie ustali, że uwierzytelnienie zakończyło się pomyślnie, w takim przypadku autentykator musi przesłać sukces EAP (kod 3).
  • Niezależnie od tego, czy wynik wskazuje powodzenie, czy niepowodzenie, aplikacja wywołuje EapHostPeerEndSession, aby zakończyć sesję. W przypadku awarii można ponowić próbę uwierzytelnienia, otwierając inną sesję z hostem EAPHost i podając tę samą lub nową tożsamość.

Proces uwierzytelniania LEAP

Proces uwierzytelniania LEAP różni się od zwykłego procesu uwierzytelniania EAPhost w następujący sposób:

  • Uwierzytelnianie protokołu EAP jest inicjowane przez serwer (authenticator). Z kolei program LEAP jest inicjowany przez klienta (element równorzędny).

    • W związku z tym podczas pisania modułu LEAP należy zawsze upewnić się, że pakiet żądania wyzwania z metody równorzędnej i pakiet odpowiedzi EAP z serwera EAP muszą zawsze mieć ten sam identyfikator pakietu co pakiet powodzenia EAP z serwera.
    • Z kolei pakiety EAPHost żądania, odpowiedzi i powodzenia zazwyczaj mają różne identyfikatory.

      Notatka

      Każde żądanie protokołu EAP ma pole Typ, aby wskazać, czego żądano. Podobnie jak w przypadku pakietu Żądania każdy pakiet odpowiedzi protokołu EAP zawiera pole Typ, które odpowiada polu Typ żądania. Przykłady obejmują pakiety żądania tożsamości i pakiety żądania wyzwania.

       

  • W przypadku niepowodzenia funkcji EAPHost można ponowić próbę uwierzytelnienia, otwierając inną sesję za pomocą protokołu EAPHost i podając tę samą tożsamość lub nową tożsamość.

Implementacja metody LEAP Authenticator

Podczas tworzenia metody uwierzytelniania LEAP upewnij się, że:

Implementacja partnerskiej metody LEAP

Podczas opracowywania metody LEAP opartej na współpracy, upewnij się, że:

  • Metody równorzędne LEAP powinny zwrócić kod akcji EapPeerMethodResponseActionSend po pomyślnym zakończeniu pierwszej fazy uwierzytelniania (uwierzytelnianie równorzędne).
  • Metody typu peer LEAP powinny zwrócić kod akcji EapPeerMethodResponseActionResult po pomyślnym zakończeniu drugiej fazy uwierzytelniania.

Sekwencja wywołań EAPHost

przy użyciu EAPHost