認証プロトコルの初期化
EAP セキュリティで保護された接続は、RAS およびワイヤレス (802.1X) クライアントと同様の方法でクライアントとサーバーの間で初期化されます。
Client
クライアントが接続の確立を試みると、認証サービスはユーザーの 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 をインクリメントします。
また、サーバーでは、PPP_EAP_INPUT の pUserAttributes ポインターは、RAS_AUTH_ATTRIBUTE_TYPE型の属性の配列を指します。 これらは、クライアントから取得されたユーザーの属性です。
RasEapBegin 呼び出しでNO_ERROR以外の値が返された場合、セッションは切断されます。 返されたエラーは、(サーバー上で) ログに記録されるか、ユーザー (クライアント上) に表示されます。