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
指定驗證通訊協定不應該顯示使用者介面。 如果驗證通訊協議無法從所提供的數據判斷身分識別,它應該會傳回錯誤碼 ERROR_INTERACTIVE_MODE,其定義於 raserror.h 中。
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 封包的識別碼。 每個後續要求封包的此值都會遞增一個。

pUserAttributes

RAS_AUTH_ATTRIBUTE 結構的陣列指標。 陣列是由具有 raatMinimum之 raaType 成員的結構終止, (請參閱RAS_AUTH_ATTRIBUTE_TYPE) 。 在 RasEapBegin 呼叫期間,此陣列包含描述目前撥入使用者的屬性。 當 fAuthenticationComplete 成員為 TRUE 時,此陣列可能包含驗證提供者所傳回的屬性。

fAuthenticationComplete

指定布爾值,指出驗證提供者是否已驗證使用者。 TRUE 值表示驗證完成。 檢查 dwAuthResultCode 成員,以判斷驗證是否成功。 如果驗證通訊協定未使用驗證提供者,請忽略此成員。

dwAuthResultCode

指定驗證提供者驗證程序的結果。 成功驗證會導致 NO_ERRORdwAuthResultCode 的驗證失敗碼只能來自 Winerror.h、Raserror.h 或 Mprerror.h。 如果驗證通訊協定未使用驗證提供者,請忽略此欄位。

hTokenImpersonateUser

針對要求驗證的使用者處理模擬令牌。 此成員只在用戶端有效。 如需模擬令牌的詳細資訊,請參閱 存取令牌

fSuccessPacketReceived

指定驗證成功。 如果用戶端收到網路控制通訊協定 (NCP) 封包,則 RAS 會將此成員設定為 TRUE ,即使用戶端尚未收到 EAP 成功封包也一樣。 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

備註

PPP_EAP_INPUT結構是由 RAS 傳遞至驗證通訊協定,以呼叫 RasEapBeginRasEapMakeMessage

RasEapBegin 函式會使用 PPP_EAP_INPUT 結構的 pwszIdentitypwszPassword 成員來取得用戶資訊。 pwszPassword 成員只有在 fAuthenticator 成員為 FALSE 時才為非 NULL,也就是說,驗證通訊協定是在用戶端計算機上執行。

如果驗證通訊協定使用驗證提供者,例如Radius或 Windows 2000 網域驗證,則會使用下列成員來與驗證提供者進行介面:

pUserAttributesfAuthenticationCompletedwAuthResultCode 注意,只有在 fAuthenticatorTRUE 時,才會傳遞RAS_AUTH_ATTRIBUTE結構的陣列。 此陣列包含目前的會話資訊,例如埠識別碼和本機IP位址。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
標頭 raseapif.h

另請參閱

EAP 結構

可延伸驗證通訊協議參考

RAS_AUTH_ATTRIBUTE

RasEapBegin

RasEapFreeMemory

RasEapGetIdentity

RasEapMakeMessage