PPP_EAP_INPUT 结构 (raseapif.h)

PPP_EAP_INPUT结构用于 RAS 连接管理器 服务 PPP 实现与 EAP 之间的交互。

此结构提供用户信息,并便于使用身份验证提供程序,例如 RADIUS 服务器。

语法

typedef struct _PPP_EAP_INPUT {
  DWORD              dwSizeInBytes;
  DWORD              fFlags;
  BOOL               fAuthenticator;
  WCHAR              *pwszIdentity;
  WCHAR              *pwszPassword;
  BYTE               bInitialId;
  RAS_AUTH_ATTRIBUTE *pUserAttributes;
  BOOL               fAuthenticationComplete;
  DWORD              dwAuthResultCode;
  HANDLE             hTokenImpersonateUser;
  BOOL               fSuccessPacketReceived;
  BOOL               fDataReceivedFromInteractiveUI;
  PBYTE              pDataFromInteractiveUI;
  DWORD              dwSizeOfDataFromInteractiveUI;
  PBYTE              pConnectionData;
  DWORD              dwSizeOfConnectionData;
  PBYTE              pUserData;
  DWORD              dwSizeOfUserData;
  HANDLE             hReserved;
  GUID               guidConnectionId;
  BOOL               isVpn;
} PPP_EAP_INPUT, *PPPP_EAP_INPUT;

成员

dwSizeInBytes

指定 PPP_EAP_INPUT 结构的大小(以字节为单位)。 此成员的值可用于区分此结构的当前版本和未来版本。

fFlags

指定限定身份验证过程的以下标志中的零个或多个。

含义
RAS_EAP_FLAG_ROUTER
指定拨入的计算机是路由器还是 RAS 客户端。 如果计算机是路由器,则应设置此参数。
RAS_EAP_FLAG_NON_INTERACTIVE
指定身份验证协议不应显示用户界面。 如果身份验证协议无法从提供的数据中确定标识,则应返回在 raserror.h 中定义的 错误代码ERROR_INTERACTIVE_MODE
RAS_EAP_FLAG_LOGON
指定从 Winlogon 获取的用户数据。
RAS_EAP_FLAG_FIRST_LINK
指示此连接是多链接连接中的第一个链接。 有关详细信息,请参阅 [Multilink and Callback Connections] (/windows/win32/eap/multilink-and-callback-connections) 。
RAS_EAP_FLAG_GUEST_ACCESS
如果客户端需要来宾访问,则指定。 此标志通常用于无线连接的情况下,如果连续 N 个次数的身份验证失败,则尝试无线客户端(如果配置为请求来宾访问),则通过传递此标志来执行此操作。 RADIUS 服务器应设置为允许来宾访问。
RAS_EAP_FLAG_8021X_AUTH
指定此会话在无线上下文中执行。
RAS_EAP_FLAG_RESUME_FROM_HIBERNATE
指定这是计算机从休眠状态恢复后的第一次调用。
RAS_EAP_FLAG_PEAP_UPFRONT
指定在 IAS 管道的开头启用 PEAP。
RAS_EAP_FLAG_ALTERNATIVE_USER_DB
指定用户数据库不是 Active Directory。
RAS_EAP_FLAG_PRE_LOGON
指定应以安全方式获取用户或计算机帐户的凭据,而无需引发多个 UI 实例。

fAuthenticator

指定身份验证协议是在服务器还是客户端上运行。 值为 TRUE 表示身份验证协议作为验证器在服务器上运行。 值为 FALSE 表示身份验证协议作为要进行身份验证的进程在客户端上运行。

pwszIdentity

指向标识请求身份验证的用户的 Unicode 字符串的指针。 此字符串的格式为 domain\user 或 machine\user。

如果身份验证协议能够从其他源(例如证书)派生用户的标识,则应验证派生的标识是否与 pwszIdentity 的值匹配。

pwszPassword

指向包含用户帐户密码的 Unicode 字符串的指针。 仅当 fAuthenticatorFALSE 时可用。 此成员可以为 NULL

bInitialId

指定 DLL 发送的初始 EAP 数据包的标识符。 对于每个后续请求数据包,此值递增 1。

pUserAttributes

指向 RAS_AUTH_ATTRIBUTE 结构的数组的指针。 数组由具有 raatMinimum 值为 raatMinimumraaType 成员的结构终止, (请参阅RAS_AUTH_ATTRIBUTE_TYPE) 。 在 RasEapBegin 调用期间,此数组包含描述当前拨入用户的属性。 当 fAuthenticationComplete 成员为 TRUE 时,此数组可能包含身份验证提供程序返回的属性。

fAuthenticationComplete

指定一个布尔值,该值指示身份验证提供程序是否已对用户进行身份验证。 值为 TRUE 表示身份验证完成。 检查 dwAuthResultCode 成员以确定身份验证是否成功。 如果身份验证协议未使用身份验证提供程序,请忽略此成员。

dwAuthResultCode

指定身份验证提供程序的身份验证过程的结果。 身份验证成功会导致 NO_ERRORdwAuthResultCode 的身份验证失败代码只能来自 Winerror.h、Raserror.h 或 Mprerror.h。 如果身份验证协议未使用身份验证提供程序,请忽略此字段。

hTokenImpersonateUser

请求身份验证的用户的模拟令牌的句柄。 此成员仅在客户端有效。 有关模拟令牌的详细信息,请参阅 访问令牌

fSuccessPacketReceived

指定身份验证成功。 如果客户端收到网络控制协议 (NCP) 数据包,即使客户端尚未收到 EAP 成功数据包,RAS 会将此成员设置为 TRUE 。 值为 FALSE 表示未收到任何 NCP 数据包。

EAP 成功数据包是一个未确认的数据包。 因此,服务器可能会丢失且不会反悔。 在这种情况下,收到 NCP 数据包表示身份验证成功,因为服务器已进入 PPP 的 NCP 阶段。

仅在客户端检查此成员。

fDataReceivedFromInteractiveUI

指定是否可从交互式用户界面获取信息。 默认值为 FALSE。 每当用户退出身份验证协议的交互式用户界面时,RAS 将此成员设置为 TRUE

pDataFromInteractiveUI

指向从身份验证协议的交互式用户界面接收的数据的指针。 如果 fDataReceivedFromInteractiveUI 成员为 TRUE,并且交互式用户界面确实返回了数据,则此指针为非 NULL。 否则,此指针为 NULL

如果不是 NULL,则身份验证协议应在其自己的内存空间中复制数据。 RAS 在从传递 PPP_EAP_INPUT 结构的调用返回时释放此数据占用的内存。 为了释放内存,RAS 调用 RasEapFreeMemory 函数。

dwSizeOfDataFromInteractiveUI

指定 pDataFromInteractiveUI 指向的数据的大小(以字节为单位)。 如果未从交互式用户界面返回任何数据,则此成员为零。

pConnectionData

指向从身份验证协议的配置用户界面接收的连接数据的指针。 仅当在 RasEapBegin 中传递PPP_EAP_INPUT结构时,此数据才可用。 它在对 RasEapMakeMessage 的调用中不可用。

身份验证协议应在自己的内存空间中复制此数据。 RAS 在从传递 PPP_EAP_INPUT 结构的调用返回时释放此数据占用的内存。 为了释放内存,RAS 调用 RasEapFreeMemory 函数。

如果身份验证协议的配置用户界面不返回任何数据,则此成员为 NULL

dwSizeOfConnectionData

指定 pConnectionData 指向的数据的大小(以字节为单位)。 如果 pConnectionDataNULL,则此成员为零。

pUserData

指向从客户端计算机上身份验证协议的 RasEapGetIdentity 函数接收的用户数据的指针。 如果身份验证协议未实现 RasEapGetIdentity,则此成员指向此用户的注册表中的数据。

仅当在 RasEapBegin 中传递PPP_EAP_INPUT结构时,此数据才可用。 它在对 RasEapMakeMessage 的调用中不可用。

身份验证协议应在自己的内存空间中复制此数据。 RAS 在从传递 PPP_EAP_INPUT 结构的调用返回时释放此数据占用的内存。

如果 RasEapGetIdentity 函数未实现或未返回任何数据,并且注册表中不存在用户的数据,则此成员为 NULL

dwSizeOfUserData

指定 pUserData 指向的数据的大小(以字节为单位)。 如果 pUserDataNULL,则此成员为零。

hReserved

此成员是保留的。

guidConnectionId

isVpn

注解

调用 RasEapBegin 和 RasEapMakeMessage 时,RAS 会将PPP_EAP_INPUT结构传递给身份验证协议。

PPP_EAP_INPUT 结构的pwszIdentitypwszPassword 成员由 RasEapBegin 函数用于获取用户信息。 仅当 fAuthenticator 成员为 FALSE 时,pwszPassword 成员为非 NULL,即身份验证协议在客户端计算机上运行。

如果身份验证协议使用身份验证提供程序(如 Radius 或 Windows 2000 域身份验证),则以下成员用于与身份验证提供程序进行交互:

pUserAttributesfAuthenticationCompletedwAuthResultCode 请注意,仅当 fAuthenticatorTRUE 时,才会传递RAS_AUTH_ATTRIBUTE结构的数组。 此数组包含当前会话信息,例如端口标识符和本地 IP 地址。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 raseapif.h

另请参阅

EAP 结构

可扩展身份验证协议参考

RAS_AUTH_ATTRIBUTE

RasEapBegin

RasEapFreeMemory

RasEapGetIdentity

RasEapMakeMessage