サプリカント API の呼び出しシーケンス
このトピックでは、サプリカント API の特定の呼び出しシーケンスについて説明します。
サプリカント API 呼び出しシーケンスの概要
サプリカントがアクセス ポイントなどのプロバイダーから EAP パケットを受信すると、通常、次のサプリカント API 呼び出しフローが発生します。
- アプリケーションは、EAPHost 構成データとユーザー データを使用して EapHostPeerBeginSession を呼び出します。 呼び出しが成功すると、 EAP_SESSION_HANDLE セッション ハンドルが返されます。
- サプリカントによって受信された各パケットは、 EapHostPeerProcessReceivedPacket の呼び出しによって処理されます。 その後、サプリカントは、関数によって返されるアクション コードに対応する関数を呼び出します。
- アクション コードが EapHostPeerResponseSend の場合、サプリカントは EapHostPeerGetSendPacket を呼び出して、認証子に送信される応答を取得します。
- セッション中にサプリカントに返されるアクション コードが EapHostPeerResponseRespond の場合は、EAP 属性が使用可能であることを示します。 その後、サプリカントは EapHostPeerGetResponseAttributes を呼び出して取得します。 これらの属性には、認証プロセス中に使用される補足データが含まれます。 サプリカントは属性の処理を完了すると、データを更新する EapHostPeerSetResponseAttributes を呼び出します。 この関数は、サプリカントの次のアクションを決定するアクション コードを返します。
- アクション コードが EapHostPeerResponseInvokeUI の場合、サプリカントはユーザー インターフェイス ダイアログを生成して、資格情報や ID 情報などの対話型データをユーザーから取得します。 以下の「サプリカント API 呼び出しフローとのユーザー操作」を参照してください。
- アクション コードが EapHostPeerResponseResult の場合、認証セッションの結果がサプリカントで使用可能であることを示します。 その後、サプリカントは EapHostPeerGetResult を呼び出して結果を取得します。 結果が成功または失敗を示しているかどうかに関係なく、サプリカントは EapHostPeerEndSession を呼び出します。 障害が発生した場合は、EAPHost で別のセッションを開き、新しい ID を指定するか、元の ID を使用して再度認証を試みることで、再認証を試みることができます。
サプリカント API 呼び出しフローとのユーザー操作
場合によっては、サプリカントは認証プロセスを続行するためにユーザーから情報を取得する必要があります。
次の一覧は、対話型入力を有効にするために必要なサプリカントおよび EAPHost UI プロセスでの呼び出しのシーケンスを示しています。
サプリカントは、 EapHostPeerGetUIContext を呼び出して、現在のユーザー インターフェイス コンテキストを取得します。
その後、サプリカントは、UI コンテキスト データをサプリカント UI プロセスに送信します。
Note
UI プロセスは、通常は UI を収集するか、対話型 UI を処理しますが、サプリカント プロセスとは別です。 2 つのプロセスを分離することは EAPHost の要件ではありませんが、これを行うと、UI プロセスがデスクトップと対話できるという利点があります。
サプリカントが UI を単独でレンダリングする場合は、 EapHostPeerQueryInteractiveUIInputFields 関数を呼び出して、発生する対話型 UI コンポーネントの入力フィールドを取得します。 それ以外の場合は、EapHostPeerInvokeInteractiveUI を呼び出してメソッド対話型 UI を呼び出す従来のモデルに従います。
Note
EAP_E_EAPHOST_METHOD_OPERATION_NOT_SUPPORTEDが返された場合、サプリカントは、EapHostPeerInvokeInteractiveUI を呼び出してメソッド対話型 UI を呼び出す従来のモデルに従う必要があります。 エラーが発生した場合、 EapHostPeerQueryInteractiveUIInputFields は NULL 以外のリターン コードを返します。
サプリカントが EapHostPeerQueryInteractiveUIInputFields を呼び出すか 、EaphostPeerInvokeInteractiveUI を呼び出すかにかかわらず、UI プロセスは既存のコンテキスト データを渡し、Eappcfg.dll読み込みます。 新しいデータを収集するために適切な UI が生成されます。 ユーザー入力を含む可能性がある新しい UI コンテキスト データがコピーされ、古いコンテキスト データが EapPeerFreeMemory の呼び出しで解放されます。
UI プロセスは、新しいコンテキスト データをサプリカントに返し、 EapHostPeerSetUIContext を呼び出して設定します。
関連トピック