EAP 보안 연결은 RAS 및 무선(802.1X) 클라이언트와 유사한 방식으로 클라이언트와 서버 간에 초기화됩니다.
클라이언트
클라이언트가 연결을 설정하려고 하면 인증 서비스는 사용자에 대한 ID 정보를 가져옵니다. 이 인증 프로토콜의 레지스트리에 RAS_EAP_VALUENAME_INVOKE_NAMEDLG 값이 있고 이 값이 0으로 설정된 경우 인증 서비스는 RasEapGetIdentity호출합니다. 이 함수는 일반적으로 ID 정보가 인증 프로토콜과 관련된 형식일 수 있도록 하는 사용자 인터페이스를 표시합니다. 예를 들어 인증서 또는 숫자 ID입니다. RAS_EAP_VALUENAME_INVOKE_NAMEDLG 없거나 1로 설정된 경우 인증 서비스에서 표준 시스템 사용자 이름 대화 상자를 표시합니다.
인증 서비스가 사용자에 대한 ID 정보를 가져오면 인증 프로토콜의 RasEapBegin구현을 호출합니다. 이 호출을 사용하면 인증 프로토콜이 RasEapMakeMessage RasEapEnd대한 후속 호출에서 서비스에서 전달하는 작업 버퍼를 할당하고 초기화할 수 있습니다. 작업 버퍼는 서비스에 불투명하며 작업 버퍼의 내용에 액세스하지 않습니다. 인증 프로토콜이 각 EAP 세션에 대해 고유한 작업 버퍼를 만드는 경우 작업 버퍼는 세션 및 스레드로부터 안전합니다. 인증 프로토콜은 작업 버퍼에 대한 메모리를 할당하므로 인증 프로토콜은 RasEapFreeMemory 함수를 사용하여 이 메모리를 해제해야 합니다.
RasEapBegin호출에서 서비스는 연결에 대한 구성 정보와 사용자의 ID 정보에 대한 포인터가 포함된 PPP_EAP_INPUT 구조도 전달합니다. 서비스는 항상 PPP_EAP_INPUTpszIdentity 멤버에 대한 값을 전달합니다. 그러나 PPP_EAP_INPUTpszPassword 멤버는 NULL 수 있습니다.
PPP_EAP_INPUT 구조 내에서 fAuthenticator 멤버는 인증 프로토콜이 인증되도록 호출되는지(클라이언트에서) 또는 인증자(서버)로 호출되는지 여부를 나타냅니다.
서버
서버에서 PPP_EAP_INPUTbInitialID 멤버는 서버가 첫 번째 EAP 패킷에 사용하는 ID를 지정합니다. 서버는 후속 패킷에 대해 이 ID를 증가합니다.
또한 서버에서 pUserAttributes는 PPP_EAP_INPUT 포인터가 RAS_AUTH_ATTRIBUTE_TYPE 형식의 특성 배열을 가리킵니다. 클라이언트에서 가져온 사용자에 대한 특성입니다.
RasEapBegin 호출이 NO_ERROR이외의 값을 반환하면 세션 연결이 끊어집니다. 반환된 오류는 서버에서 기록되거나(클라이언트의) 사용자에게 표시됩니다.