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_INPUTの pszIdentity メンバーの値を渡します。 ただし、PPP_EAP_INPUT の pszPassword メンバーは NULL できます。
PPP_EAP_INPUT 構造体内では、fAuthenticator メンバーは、認証プロトコルが認証される (クライアント上で) 呼び出されているか、認証システム (サーバー上) として呼び出されているかを示します。
サーバー
サーバーでは、PPP_EAP_INPUT の bInitialID メンバーは、サーバーが最初の EAP パケットに使用する ID を指定します。 サーバーは、後続のパケットに対してこの ID をインクリメントします。
また、サーバー上では、pUserAttributes ポインター PPP_EAP_INPUT、RAS_AUTH_ATTRIBUTE_TYPE 型の属性の配列を指します。 これらは、クライアントから取得されたユーザーの属性です。
RasEapBegin 呼び出しが NO_ERROR以外の値を返した場合、セッションは切断されます。 返されたエラーは、(サーバー上で) ログに記録されるか、ユーザー (クライアント上) に表示されます。