このトピックでは、EAPHost サプリカント API に関してよく寄せられる質問に対する回答を示します。
"EapHostPeerInitialize" と "EapHostPeerUninitialize" を呼び出す必要があるのはなぜですか?
EapHostPeerInitialize と EapHostPeerUninitialize は、サプリカントと EAPHost の間のプロセス間通信 (IPC) に使用される COM 環境を初期化および初期化解除します。
シングル スレッド アパートメント (STA) 用に COM が初期化されたスレッドで呼び出す必要がある関数はどれですか?
EAPHostPeerInvokeConfigUI、 EapHostPeerInvokeInteractiveUI、 および EapHostAuthenticatorInvokeConfigUI は、STA 用に COM が初期化されたスレッドで呼び出す必要があります。 これは、COM API CoInitialize を呼び出すことによって実現できます。サプリカントが STA スレッド CoUninitialize で終了したら、終了する前に を呼び出す必要があります。
EAPHost はキーマテリアルをどのようにエクスポートしますか?
EAPHost EAP メソッドは、Microsoft ポイントツーポイント暗号化 (MPPE) キーの形式でマスター セッション キー (MSK) をサプリカントにエクスポートします。 ペアワイズ マスター キー (PMK) などの追加のキーマテリアルは、MSK を使用してサプリカントによって生成できます。 認証時に他のキーを生成するメソッドでは、これらのキーをベンダー固有の属性としてサプリカントに提供できます。
拡張マスター セッション キー (EMSK) とは
EMSK は、EAP メソッドによってエクスポートされる追加のキーマテリアルです。 EMSK の長さは 64 オクテット以上です。 EMSK は EAP クライアントとサーバー間で共有されますが、認証システムやその他のサード パーティとは共有されません。 現在、EMSK は将来の使用のために予約されています。 詳細については、「 ワイヤレス LAN の拡張認証プロトコル EAP) メソッドの要件」を参照してください。
メソッドが属性を使用または生成するタイミング
EAP メソッドで属性または EMSK が生成された場合、サプリカントは属性を使用します。 通常、サプリカントによって使用される属性はキーです。 使用される属性は、 eatPeerId、 eatServerId、 eatMethodId、 eatEMSK、 および eatCredentialsChanged です。 詳細については、「 EAP_ATTRIBUTE_TYPE」を参照してください。 EAP メソッドでは、次のような追加のアプリケーション固有の EMSK マテリアルをエクスポートできます。
- セッション ID
- [ネットワーク アクセス保護](/windows/desktop/NAP/network-access-protection-start-page)(NAP)
802.1X はどの属性を使用しますか?
ネイティブ ワイヤレス 802.1X サプリカントは、次の EAPHost 認証属性を使用します。
- パスワード通知を変更する
- Microsoft Point-to-Point Encryption (MPPE) の送受信キー。 VendorId/VendorType = 331/16 および 311/1
MPPE キーは、認証が成功した時点で、ピアと認証子の両方によって生成されるキーです。 これらのキーは、送受信されるパケットを暗号化および復号化するために 、802.1X とネットワーク アクセス サーバー (NAS) によって使用されます。
EAPHost のEAP_PEER_FLAG_GUEST_ACCESS フラグの目的は何ですか?
このフラグが EAPHostPeerBeginSession で設定されている場合、EAPHost はこれをゲスト承認の要求として解釈し、その後サプリカントに渡され、EAP サーバーに返される NULL ID 応答を返します。
サプリカントはどのようにマシン認証を要求しますか?
マシン認証は、 EAP_FLAG_MACHINE_AUTH フラグを設定することによって要求されます。
サプリカントはどのようにしてユーザー認証を要求しますか?
ユーザー認証は、 EAP_FLAG_MACHINE_AUTH フラグを設定しないことによって要求されます。
"EapHostFreeEapError" 関数の代わりに "EapHostPeerFreeErrorMemory" を使用するタイミング
EapHostPeerFreeErrorMemory 関数は、EAPHost 構成 API によって返されるEAP_ERROR構造体を解放する場合にのみ使用されます。 EAPHost 構成 API は、EapHostPeerConfigApis.h で定義されています。 これに対し、 EapHostPeerFreeEapError 関数は、EAPHost ランタイム API によって返される EAP_ERROR 構造体を解放するために使用されます。 EAPHost ランタイム API は EapPApis.h で定義されています。 API の構成バージョンでランタイム バージョンの API を使用しないでください。これを行うと、予期しない結果が生成される可能性があります。
サプリカントで EAP 認証セッションを処理するために使用するのと同じスレッドに UI を実装しました。 資格情報やその他のユーザー入力データを取得するための対話型ユーザー インターフェイス ダイアログ ボックスを起動すると、EAPHost による EAP ピア メソッドへの次の呼び出しが "ERROR_OBJECT_DISCONNECTED" で失敗します。 これが発生した理由と対処方法
EAPHost クライアント側 API はすべて C スタイル API ですが、これらの C API は対応する COM API のラッパーにすぎません。 C スタイル API は、マルチスレッド COM 環境で実行されます。 UI コードは通常、アパートメント スレッド モデルで実行されます。 2 つのスレッド モデルは互いに競合するため、EAP 認証を処理する同じスレッドで UI コードを実行しないでください。
"EapHostPeerBeginSession" API が "NotificationHandler" コールバック関数ポインターをパラメーターとして受け取る理由
NotificationHandler は、サプリカントに再認証が必要であることを通知するメカニズムです。 ネットワーク アクセス保護 (NAP) による認証など、サプリカントが再認証を必要とするさまざまなシナリオがあります。
"EapHostPeerBeginSession" API の "pConnectionId" パラメーターの目的は何ですか?
pConnectionId は、サプリカントに属するネットワーク接続を識別するために使用されるサプリカント定義 GUID 値へのポインターです。 NotificationHandler コールバック関数が呼び出されると、この GUID が渡され、サプリカントが再認証要求に使用するネットワーク接続が識別されます。
検疫状態に変更があるかどうか操作方法知っていますか?
ユーザーは、システムに少なくとも 1 つのネットワーク アクセス保護 (NAP) 検疫適用クライアント (QEC) 登録済みインターフェイスがある場合にのみ、検疫状態の変更の視覚的な通知を受け取ります。 その場合、再認証が試行されると、ユーザーはポップアップ ウィンドウを介して検疫状態の変更を通知されます。
システムに NAP QEC 登録済みインターフェイスがあるかどうか操作方法知っていますか?
管理者特権のウィンドウを開き、netsh コマンド "netsh nap client show state" を実行します。 詳細については、「 Netsh コマンド」を参照してください。
サプリカントが再認証を行う場合、QEC は再認証時にどのような接続 ID を使用する必要がありますか?
QEC は、前のセッションで使用されたのと同じ接続 ID を使用する必要があります。
ユーザー インターフェイス (UI) ダイアログ ボックスを表示できる EAPHost サプリカント メソッドは 1 つだけですが、EAP メソッドにはいくつかの種類の UI 固有の呼び出しがあります。 サプリカントが UI ダイアログ ボックスを表示する必要があることを示す "EapHostPeerResponseInvokeUI" アクション コードを取得する場合、サプリカントは何を呼び出す必要がありますか?
EAPHost は呼び出すメソッド関数を認識しているため、ユーザーが操作を行う必要はありません。 たとえば、アクション コード EapHostPeerResponseInvokeUI が返されると、サプリカントは次の 3 つの関数を EapHostPeerGetUIContext、 EapHostPeerInvokeInteractiveUI、 EapHostPeerSetUIContext の順に呼び出します。
資格情報 BLOB と構成 BLOB の違いは何ですか?
資格情報 BLOB には、ユーザー名、パスワード、PIN などのユーザー データのみが含まれます。 構成 BLOB には、 メソッドの動作を制御する設定が含まれています。
EAPHost クライアント側でトレースを有効にできますか?
はい。 詳細については、「 トレースの有効化」を参照してください。