身份验证函数
身份验证函数会根据使用情况进行分类,如下所示:
- SSPI 函数
- SSP/AP 实现的函数
- 用户模式 SSP/AP 实现的函数
- SSP/AP 调用的 LSA 函数
- 用户模式 SSP/AP 调用的 LSA 函数
- GINA 导出函数
- 登录用户函数
- Winlogon 支持函数
- 网络提供程序函数
- LSA 登录函数
- 身份验证包实现的函数
- 身份验证包调用的 LSA 函数
- 子身份验证函数
- 凭据管理函数
- 智能卡函数
- SASL 函数
- 其他函数
SSPI 函数
安全支持提供程序接口 (SSPI) 函数分为以下主要类别。
-
用于列出可用安全包并选择包的函数。
-
使用凭据句柄来创建安全上下文的函数。
-
在通过安全连接进行消息交换的期间,使用安全上下文来确保消息完整性和隐私性的函数。 完整性将通过消息签名和签名验证来实现。 隐私性将通过消息加密和解密来实现。
包管理
SSPI 包管理函数会启动安全包、枚举可用包并查询安全包的属性。 以下 SSPI 函数提供针对安全包的管理服务。
函数 | 说明 |
---|---|
EnumerateSecurityPackages | 列出可用安全包及其功能。 |
InitSecurityInterface | 检索安全支持提供程序 (SSP) 调度表的指针。 |
QuerySecurityPackageInfo | 检索有关特定安全包的信息。 此信息包括针对身份验证信息、凭据和上下文的大小限制。 |
凭据管理
SSPI 凭据管理函数提供凭据句柄,即用于访问主体的对不透明安全对象的引用。 安全对象并不透明,因为应用程序只能访问句柄,而不能访问结构的实际内容。
对凭据上下文内容的所有引用均会通过对象的句柄来完成,而安全包会取消引用句柄以访问凭据的特定信息。 凭据句柄是介于 {0x00000000, 0x00000000} 与 {0xFFFFFFFF, 0xFFFFFFFE} 之间的一个 64 位值。
凭据管理功能还会释放凭据句柄并查询凭据的属性。 目前,与凭据关联的名称是唯一可供查询的属性。
以下函数将与凭据管理一起使用。
函数 | 说明 |
---|---|
AcquireCredentialsHandle(常规) | 获取指定主体的预先存在的凭据的句柄。 |
ExportSecurityContext | 将安全上下文导出到上下文缓冲区中。 |
FreeCredentialsHandle | 释放凭据句柄和关联的资源。 |
ImportSecurityContext | 将使用 ExportSecurityContext 导出的安全上下文导入到当前进程中。 |
QueryCredentialsAttributes | 检索凭据的属性,例如与此凭据关联的名称。 |
上下文管理
SSPI 上下文管理函数会创建并使用安全上下文。
在通信链路中,客户端和服务器会合作创建共享的安全上下文。 客户端和服务器均使用具有 消息支持 函数的安全上下文,以确保连接期间的消息完整性和隐私性。
安全上下文是一种不透明的安全对象。 安全上下文中的信息无法用于应用程序。 上下文管理函数会创建并使用上下文句柄,而安全包则会取消引用上下文句柄以访问其安全内容。
上下文句柄是介于 {0x00000000, 0x00000000} 与 {0xFFFFFFFF, 0xFFFFFFFE} 之间的一个 64 位值。
以下函数将与上下文管理一起使用。
函数 | 说明 |
---|---|
AcceptSecurityContext(常规) | 由服务器用于根据从客户端接收的不透明消息来创建安全上下文。 |
ApplyControlToken | 将补充安全消息应用于现有安全上下文。 |
CompleteAuthToken | 完成身份验证令牌。 此功能由协议(如 DCE)使用,而这些协议需在传输应用程序更新某些消息参数后修改安全信息。 |
DeleteSecurityContext | 释放安全上下文和关联的资源。 |
FreeContextBuffer | 释放安全包所分配的内存缓冲区。 |
ImpersonateSecurityContext | 模拟安全上下文,以显示为系统的客户端。 |
InitializeSecurityContext (常规) | 由客户端用于通过生成要传递给服务器的不透明消息来启动安全上下文。 |
QueryContextAttributes (General) | 使传输应用程序能够向安全包查询某个安全上下文的某些属性。 |
QuerySecurityContextToken | 获取客户端安全上下文的访问令牌,并直接使用它 |
SetContextAttributes | 允许传输应用程序为安全包设置安全上下文的属性。 此功能仅受 Schannel 安全包支持。 |
RevertSecurityContext | 允许安全包停止模拟调用方,并还原其自己的安全上下文。 |
消息支持
SSPI 消息支持函数允许应用程序传输和接收防篡改消息,以及加密和解密消息。 这些函数使用包含消息的一个或多个缓冲区,并使用由上下文管理函数创建的安全上下文。 这些函数的行为因是否正在使用连接、数据报或流上下文而异。 有关这些差异的说明,请参阅 SSPI 上下文语义。
以下函数提供针对消息的安全支持。
函数 | 说明 |
---|---|
DecryptMessage (常规) | 使用安全上下文中的会话密钥来解密已加密的消息。 |
EncryptMessage (常规) | 使用安全上下文中的会话密钥来加密消息。 |
MakeSignature | 生成消息的加密校验和,同时包括排序信息以免出现消息丢失或插入。 |
VerifySignature | 验证发送者使用 MakeSignature 函数来签名的已收到消息的签名。 |
SSP/AP 实现的函数
以下函数由安全支持提供程序/身份验证包 (SSP/AP) 中所含的安全包来实现。
在下表中,第一组函数由 Windows XP SSP/AP 安全包实现。 第二组函数则仅由 Windows XP SSP/AP 安全包实现。
本地安全机构 (LSA) 使用 SSP/AP 的 SpLsaModeInitialize 函数所提供的 SECPKG_FUNCTION_TABLE 结构来访问这些函数。
以下函数由所有身份验证包实现。
函数 | 说明 |
---|---|
LsaApCallPackage | 当与 LSA 建立受信任连接的登录应用程序调用 LsaCallAuthenticationPackage 函数并指定身份验证包的标识符时,由本地安全机构 (LSA) 进行调用。 |
LsaApCallPackagePassthrough | 发送到 LsaCallAuthenticationPackage 函数的直通登录请求的调度函数 |
LsaApCallPackageUntrusted | 当与 LSA 建立不受信任连接的登录应用程序调用 LsaCallAuthenticationPackage 函数并指定身份验证包的标识符时,由本地安全机构 (LSA) 进行调用。 |
LsaApInitializePackage | 在系统初始化期间,由本地安全机构 (LSA) 调用一次,从而为身份验证包提供一个自行初始化的机会。 |
LsaApLogonTerminated | 用于在登录会话终止时通知身份验证包。 当引用登录会话的最后一个令牌被删除时,登录会话便会终止。 |
LsaApLogonUser | 对用户的登录凭据进行身份验证。 |
LsaApLogonUserEx | 对用户的登录凭据进行身份验证。 |
LsaApLogonUserEx2 | 用于在用户首次登录时对用户登录尝试进行身份验证。 为用户建立新的登录会话,并返回该用户的验证信息。 |
以下其他函数由 SSP/AP 安全包实现。
函数 | 说明 |
---|---|
SpAcceptCredentials | 由本地安全机构 (LSA) 进行调用,以便传递所有凭据为经过身份验证的安全主体而存储的 安全包。 |
SpAcceptLsaModeContext | 服务器调度函数,它可用于创建服务器和客户端共享的安全上下文。 |
SpAcquireCredentialsHandle | 调用以获取主体的凭据的句柄。 |
SpAddCredentials | 用于为安全主体添加凭据。 |
SpApplyControlToken | 将控制令牌应用于安全上下文。 目前,此函数不由本地安全机构 (LSA) 进行调用。 |
SpDeleteContext | 删除安全上下文。 |
SpDeleteCredentials | 从安全包的主要或补充凭据列表中删除凭据。 |
SpFreeCredentialsHandle | 释放通过调用 SpAcquireCredentialsHandle 函数所获取的凭据。 |
SpGetCredentials | 检索用户凭据。 |
SpGetExtendedInformation | 提供有关安全包的扩展信息。 |
SpGetInfo | 提供有关安全包的一般信息,例如其名称和功能。 |
SpGetUserInfo | 检索有关登录会话的信息。 |
SPInitialize | 由本地安全机构 (LSA) (LSA) 调用一次,以便提供安全包(其中包含一般安全信息和受支持函数的调度表。) |
SpInitLsaModeContext | 客户端调度函数,它可用于在服务器与客户端之间建立安全上下文。 |
SpQueryContextAttributes | 检索安全上下文的属性。 |
SpQueryCredentialsAttributes | 检索凭据的属性。 |
SpSaveCredentials | 将补充凭据保存到用户对象。 |
SpSetExtendedInformation | 设置有关安全包的扩展信息。 |
SpShutdown | 在卸载 SSP/AP 之前执行所需的全部清理。 |
SslCrackCertificate | 返回一个 X509Certificate 结构,其中包含指定证书 Blob 中所含的信息。 |
SslEmptyCache | 从 Schannel 缓存中删除指定的字符串。 |
SslFreeCertificate | 释放由 SslCrackCertificate 函数的上一次调用所分配的证书。 |
用户模式 SSP/AP 实现的函数
以下函数由可加载到客户端/服务器应用程序中的安全支持提供程序/身份验证包 (SSP/AP) 实现。
SSP/AP 表示通过在 SpInitLsaModeContext 和 SpAcceptLsaModeContext 函数的 MappedContext 中返回 TRUE,来实现用户模式函数。 SpInitLsaModeContext 函数由传输级应用程序的客户端使用,而 SpAcceptLsaModeContext 则由服务器端使用。
将 SSP/AP 加载到客户端进程或服务器进程中的操作将由安全提供程序 DLL(Security.dll 或 Secur32.dll)来处理。 安全提供程序 DLL 会通过查找 SSP/AP 所实现 SpUserModeInitialize 函数的地址并调用该地址来加载 SSP/AP。 此函数会返回一组表,其中包含在每个安全包中实现的用户模式函数的指针。
将 SSP/AP 加载到客户端或服务器进程后,本地安全机构 (LSA) 会将安全上下文信息(由 SpInitLsaModeContext 或 SpAcceptLsaModeContext 返回)和所有其他与上下文相关的数据复制到此进程并调用安全包的 SpInitUserModeContext 函数。
客户端/服务器应用程序会通过调用安全支持提供程序接口 (SSPI) 函数来访问用户模式功能。 SSPI 函数将由安全提供程序 DLL 通过使用此包提供的 SECPKG_USER_FUNCTION_TABLE 来进行映射。
函数 | 说明 |
---|---|
SpCompleteAuthToken | 完成身份验证令牌。 实现 SSPI CompleteAuthToken 函数。 |
SpDeleteContext | 删除安全上下文。 实现 SSPI DeleteSecurityContext 函数。 |
SpExportSecurityContext | 将安全上下文导出到其他进程。 实现 SSPI ExportSecurityContext 函数。 |
SpFormatCredentials | 对将存储到用户对象中的凭据设置格式。 |
SpGetContextToken | 获取要模拟的令牌。 由 SSPI ImpersonateSecurityContext 函数使用。 |
SpImportSecurityContext | 从其他进程导入安全上下文。 实现 SSPI ImportSecurityContext 函数。 |
SpInitUserModeContext | 从打包的本地安全机构 (LSA) 模式山下文创建用户模式安全上下文。 |
SpInstanceInit | 在 SSP/AP 中初始化用户模式安全包。 |
SpMakeSignature | 根据指定的消息和安全上下文生成签名。 实现 SSPI MakeSignature 函数。 |
SpMarshallSupplementalCreds | 将补充凭据从公共格式转换为适合本地过程调用的格式。 |
SpQueryContextAttributes | 检索安全上下文的属性。 实现 SSPI QueryContextAttributes(常规)函数。 |
SpSealMessage | 对客户端和服务器之间交换的消息进行加密。 实现 SSPI EncryptMessage(常规)函数。 |
SpUnsealMessage | 解密先前使用 SpSealMessage 函数加密的消息。 实现 SSPI DecryptMessage(常规)函数。 |
SpUserModeInitialize | 当安全支持提供程序/身份验证包 (SSP/AP) DLL 加载到客户端/服务器应用程序的进程空间时进行调用。 此函数可为 SSP/AP DLL 中的每个安全包提供 SECPKG_USER_FUNCTION_TABLE 表。 |
SpVerifySignature | 根据签名,验证收到的消息是否正确。 实现 SSPI VerifySignature 函数。 |
SSP/AP 调用的 LSA 函数
本地安全机构 (LSA) 可向部署在安全支持提供程序/身份验证包 (SSP/AP) 中的安全包提供以下函数。 这些函数会在 LSA_SECPKG_FUNCTION_TABLE 结构中提供,且可在将 SSP/AP 加载到 LSA 的进程空间时进行调用。 以下函数可用于所有 AP。
函数 | 说明 |
---|---|
AddCredential | 添加用户凭据。 |
AllocateClientBuffer | 在包的客户端的地址空间中分配内存。 |
AllocateLsaHeap | 在堆上分配内存。 传回 LSA 的某些信息预计将通过此功能进行分配。 |
CopyFromClientBuffer | 将客户端进程的地址空间中的信息复制到当前进程的缓冲区内。 |
CopyToClientBuffer | 将信息从当前进程中的缓冲区复制到客户端进程的地址空间中。 |
CreateLogonSession | 创建登录会话。 |
DeleteCredential | 删除用户凭据。 |
DeleteLogonSession | 删除 LSA 登录会话。 |
FreeClientBuffer | 释放包的客户端的地址空间中的内存。 |
FreeLsaHeap | 解除分配先前由 AllocateLsaHeap 分配的内存。 |
GetCredentials | 检索与登录会话关联的凭据。 |
以下函数可用于 SSP/AP。
函数 | 说明 |
---|---|
AllocateSharedMemory | 分配一部分共享内存。 |
AuditAccountLogon | 为已尝试的登录创建审核记录。 |
AuditLogon | 为登录会话创建审核记录。 |
CallPackage | 调用包。 |
CallPackageEx | 调用其他包。 |
CallPackagePassthrough | 从一个安全包调用其他安全包。 |
CancelNotification | 取消特殊事件的通知。 |
ClientCallback | 允许安全包在客户端进程中调用函数。 对于 ClientCallback 函数原型,请参阅 ClientCallback 函数原型。 |
CloseSamUser | 关闭 Security Accounts Manager 数据库条目的句柄。 |
ConvertAuthDataToToken | 将授权数据转换为用户令牌。 |
CrackSingleName | 将名称从一种格式转换为另一种格式。 |
CreateSharedMemory | 在客户端与 SSP/AP 之间共享一部分内存。 |
CreateThread | 创建新线程。 |
CreateToken | 创建令牌。 |
DeleteSharedMemory | 删除一部分共享内存。 |
DuplicateHandle | 复制句柄。 |
FreeReturnBuffer | 释放 LSA 分配的缓冲区。 |
FreeSharedMemory | 释放一部分共享内存。 |
GetAuthDataForUser | 检索用户帐户的授权数据。 |
GetCallInfo | 检索有关最近函数调用的信息。 |
GetClientInfo | 检索有关安全包的用户进程的信息。 |
GetUserAuthData | 返回用户的授权数据。 |
GetUserCredentials | 尚未实现。 |
ImpersonateClient | 由安全包进行调用,以模拟包用户。 |
MapBuffer | 将 SecBuffer 结构映射到安全支持提供程序/身份验证包 (SSP/AP) 的地址空间中。 |
OpenSamUser | 检索 Security Accounts Manager (SAM) 数据库中用户帐户的句柄。 |
RegisterNotification | 提供一种机制,并通过该机制通知安全包。 通知既可按固定时间间隔运行,也可在发出事件对象信号时或在某些系统事件发生期间运行。 |
SaveSupplementalCredentials | 已过时。 请勿使用。 |
UnloadPackage | 卸载安全支持提供程序/身份验证包 (SSP/AP)。 |
UpdateCredentials | 为一个安全包提供一种机制,以便通知其他包登录会话的凭据已更改。 |
用户模式 SSP/AP 调用的 LSA 函数
在用户模式进程中执行的安全支持提供程序/身份验证包 (SSP/AP) 内的安全包可使用 SECPKG_DLL_FUNCTIONS 表中的指针来访问以下函数。
函数 | PSDK 状态 |
---|---|
AllocateHeap | 为返回到本地安全机构 (LSA) 的缓冲区分配内存。 |
FreeHeap | 释放分配使用 AllocateHeap 来分配的内存。 |
RegisterCallback | 注册用户模式回调函数。 |
GINA 导出函数
GINA DLL 必须导出以下函数。
注意
Windows Vista 中会忽略 GINA DLL。
函数 | 说明 |
---|---|
WlxActivateUserShell | 激活用户 shell 程序。 |
WlxDisplayLockedNotice | 允许 GINA 显示有关锁的信息;例如,谁锁定了工作站以及何时锁定的。 |
WlxDisplaySASNotice | Winlogon 会在没有用户登录时调用此函数。 |
WlxDisplayStatusMessage | Winlogon 会在 GINA DLL 应显示消息时调用此函数。 |
WlxGetConsoleSwitchCredentials | Winlogon 会调用此函数以读取当前登录用户的凭据,以便透明地将这些凭据传输到目标会话。 |
WlxGetStatusMessage | Winlogon 会调用此函数来获取 GINA DLL 当前显示的状态消息。 |
WlxInitialize | Winlogon 会为计算机上存在的每个窗口站调用一次此函数。 目前,操作系统支持每个工作站的一个窗口站。 |
WlxIsLockOk | Winlogon 会在尝试锁定工作站之前调用此函数。 |
WlxIsLogoffOk | Winlogon 会在用户启动注销操作时调用此函数。 |
WlxLoggedOnSAS | 当 Winlogon 收到安全注意序列 (SAS) 事件而用户已登录且工作站未锁定时,它会调用此函数。 |
WlxLoggedOutSAS | 当 Winlogon 收到安全注意序列 (SAS) 事件而无用户登录时,它会调用此函数。 |
WlxLogoff | Winlogon 会调用此函数以通知 GINA 此工作站上的注销操作,从而允许 GINA 执行可能必要的所有注销操作。 |
WlxNegotiate | WlxNegotiate 函数必须由替换 GINA DLL 实现。 它是 Winlogon 对 GINA DLL 执行的首次调用。 WlxNegotiate 允许 GINA 验证它是否支持已安装的 Winlogon 版本。 |
WlxNetworkProviderLoad | Winlogon 会调用此函数以收集有效的身份验证与标识信息。 |
WlxRemoveStatusMessage | Winlogon 会调用此函数以告知 GINA DLL 停止显示状态消息。 |
WlxScreenSaverNotify | Winlogon 会在激活屏幕保护程序之前立即调用此函数,从而允许 GINA 与屏幕保护程序交互。 |
WlxShutdown | Winlogon 会在关闭之前调用此函数,从而允许 GINA 执行任意关闭任务,例如从读卡器中弹出智能卡。 |
WlxStartApplication | 当系统需要在用户的山下文中启动应用程序时,Winlogon 会调用此函数。 |
WlxWkstaLockedSAS | 当 Winlogon 收到安全注意序列 (SAS) 事件且工作站已锁定时,它会调用此函数。 |
登录用户函数
以下函数可用于登录用户。
函数 | 说明 |
---|---|
LogonUser | 尝试将用户登录到本地计算机。 |
LogonUserEx | 尝试将用户登录到本地计算机。 此函数是 LogonUser 函数的扩展版本,而它会检索有关登录用户的安全标识符 (SID)、配置文件和配额限制的信息。 |
LogonUserExExW | LogonUserExExW 函数会尝试将用户登录到本地计算机。 此函数未在公共标头中声明,且没有关联的导入库。 必须使用 LoadLibrary 和 GetProcAddress 函数以动态链接到 Advapi32.dll。 |
Winlogon 支持函数
注意
Windows Vista 中会忽略 GINA DLL。
函数 | 由 GINA 调用 |
---|---|
WlxAssignShellProtection | 由 GINA 调用,以便为新登录用户的 shell 程序分配保护。 |
WlxChangePasswordNotify | 由 GINA 调用,以表示它已更改密码。 |
WlxChangePasswordNotifyEx | 由 GINA 调用,以告知特定网络提供程序(或所有网络提供程序)某一密码已更改。 |
WlxCloseUserDesktop | 由 GINA 调用,以关闭备用用户桌面并在桌面关闭后进行清理。 |
WlxCreateUserDesktop | 由 GINA 调用,以便为用户创建备用应用程序桌面。 |
WlxDialogBox | 由 GINA 调用,以便从对话框模板创建模式对话框。 |
WlxDialogBoxIndirect | 由 GINA 调用,以便在内存中从对话框模板创建模式对话框。 |
WlxDialogBoxIndirectParam | 由 GINA 调用,以便初始化对话框控件,然后在内存中从对话框模板创建模式对话框。 |
WlxDialogBoxParam | 由 GINA 调用,以便初始化对话框控件,然后从对话框模板资源创建模式对话框。 |
WlxDisconnect | 如果启用了终端服务,则由替换 GINA DLL 调用。 GINA 会调用此函数以断开与终端服务网络会话的连接。 |
WlxGetOption | 由 GINA 调用,以检索某一选项的当前值。 |
WlxGetSourceDesktop | 由 GINA 调用,以确定在 Winlogon 切换到 Winlogon 桌面之前的当前桌面的名称和句柄。 |
WlxMessageBox | 由 GINA 调用,以创建、显示和操作消息框。 |
WlxQueryClientCredentials | 如果启用了终端服务,则由替换 GINA DLL 调用。 GINA 会调用此函数以检索未使用 Internet 连接器许可证的远程终端服务客户端的凭据。 |
WlxQueryConsoleSwitchCredentials | 由 GINA 调用,以读取从临时会话的 Winlogon 传输到目标会话的 Winlogon 的凭据。 |
WlxQueryInetConnectorCredentials | 如果启用了终端服务,则由替换 GINA DLL 调用。 GINA 会调用此函数以确定终端服务器是否正在使用 Internet 连接器许可,并检索凭据信息。 |
WlxQueryTerminalServicesData | 由 GINA 调用,以在用户登录后检索终端服务用户配置信息。 |
WlxSasNotify | 由 GINA 调用,以通知 Winlogon 安全注意序列 (SAS) 事件。 |
WlxSetContextPointer | 由 GINA 调用,以将 Winlogon 传递的上下文指针指定为对 GINA 函数的所有未来调用的第一个参数。 |
WlxSetOption | 由 GINA 调用,以设置某一选项的值。 |
WlxSetReturnDesktop | 由 GINA 调用,以指定当当前安全注意序列 (SAS) 事件处理函数完成后 Winlogon 将切换到的备用应用程序桌面。 |
WlxSetTimeout | 由 GINA 调用,以更改与对话框关联的超时。 默认超时时间为两分钟。 |
WlxSwitchDesktopToUser | 由 GINA 调用,以切换到应用程序桌面。 |
WlxSwitchDesktopToWinlogon | 允许 GINA DLL 切换到 Winlogon 桌面。 |
WlxUseCtrlAltDel | 由 GINA 调用,以告知 Winlogon 将标准 CTRL+ALT+DEL 组合键用作安全注意序列 (SAS)。 |
WlxWin31Migrate | 如果启用了终端服务,则由替换 GINA DLL 调用。 GINA 会调用此函数以完成终端服务客户端的设置。 |
网络提供程序函数
以下主题提供网络提供程序函数的参考信息。
主题 | 说明 |
---|---|
网络提供程序实现的函数 | 详细说明网络提供程序可实现的函数。 |
支持函数 | 详细说明由操作系统实现并可由网络提供程序调用的函数。 |
连接通知函数 | 详细说明在连接或断开网络资源时需要从多提供程序路由器 (MPR) 接收通知的应用程序所实现的函数。 |
网络提供程序实现的函数
以下函数可由网络提供程序实现。 网络提供程序需支持的唯一函数为 NPGetCaps。
函数 | 说明 |
---|---|
NPAddConnection | 将本地设备连接到网络资源。 |
NPAddConnection3 | 将本地设备连接到网络资源。 |
NPCancelConnection | 断开网络连接。 |
NPCloseEnum | 关闭枚举。 |
NPDeviceMode | 指定设备的父窗口。 此窗口拥有源自设备的所有对话框。 |
NPDirectoryNotify | 通知网络提供程序某些目录操作。 |
NPEnumResource | 根据 NPOpenEnum 返回的句柄来执行枚举。 |
NPFormatNetworkName | 以特定于提供程序的格式设置网络名称的格式,以便在控件中显示。 |
NPGetCaps | 返回有关网络上支持哪些服务的信息。 |
NPGetConnection | 检索有关连接的信息。 |
NPGetConnection3 | 检索有关网络连接的信息,即使它当前已断开连接。 |
NPGetConnectionPerformance | 返回有关用于访问网络资源的连接的预期性能的信息。 该请求只能针对当前已连接的网络资源。 |
NPGetDirectoryType | 确定网络目录的类型。 |
NPGetPropertyText | 检索要添加到某一网络资源的属性对话框中的按钮的名称。 |
NPGetResourceInformation | 将通过 WNet API 访问的网络资源部分与通过特定于资源类型的 API 所访问的部分区分开来。 |
NPGetResourceParent | 检索浏览层次结构中指定网络资源的父项。 |
NPGetUniversalName | 检索网络资源的通用名称。 NPGetUniversalName 函数能以 UNC 格式或较旧的远程名称格式检索此通用名称。 |
NPGetUser | 检索当前默认用户名或用于建立网络连接的用户名的值。 |
NPOpenEnum | 打开网络资源或现有连接的枚举。 必须调用 NPOpenEnum 函数才能获取枚举的有效句柄。 |
NPPropertyDialog | 当用户点击使用 NPPropertyDialog 函数添加的按钮时进行调用。 仅会对文件和目录网络属性调用 NPPropertyDialog 函数。 |
NPSearchDialog | 允许网络供应程序提供自己的浏览与搜索形式,而不仅仅是连接对话框中显示的层次结构视图。 |
支持函数
以下函数由操作系统实现,并可由网络提供程序调用。
函数 | 说明 |
---|---|
WNetSetLastError | 设置扩展错误信息。 网络提供程序应调用此函数,而不是 SetLastError。 |
连接通知函数
以下函数由在连接或断开网络资源时需要从多提供程序路由器 (MPR) 接收通知的应用程序来实现。 有关如何编写接收此类通知的应用程序的详细信息,请参阅接收连接通知。
函数 | 说明 |
---|---|
AddConnectNotify | 在每次添加连接操作(WNetAddConnection、WNetAddConnection2 和 WNetAddConnection3)之前和之后进行调用。 |
CancelConnectNotify | 在每次取消连接操作(WNetCancelConnection 或 WNetCancelConnection2)之前或之后进行调用。 |
LSA 登录函数
以下本地安全机构 (LSA) 身份验证函数会对用户进行身份验证和登录,并提供登录会话信息。
函数 | 说明 |
---|---|
LsaCallAuthenticationPackage | 请求身份验证包中特定于包的服务。 |
LsaConnectUntrusted | 建立与 LSA 的不受信任的连接。 |
LsaDeregisterLogonProcess | 断开与 LSA 的连接,并释放分配给调用方的上下文的资源。 |
LsaEnumerateLogonSessions | 检索现有登录会话的本地唯一标识符 (LUID)。 |
LsaFreeReturnBuffer | 释放为返回给调用方的缓冲区而分配的内存。 |
LsaGetLogonSessionData | 检索有关指定登录会话的信息。 |
LsaLogonUser | 根据存储的凭据对用户登录数据进行身份验证。 如果成功,它会创建新的登录会话并返回用户令牌。 |
LsaLookupAuthenticationPackage | 获取身份验证包的唯一标识符。 |
LsaQueryDomainInformationPolicy | 从 Policy 对象检索域信息。 |
LsaQueryForestTrustInformation | 检索指定本地安全机构 TrustedDomain 对象的林信任信息。 |
LsaRegisterLogonProcess | 建立与 LSA 服务器的连接,并验证调用方是否为登录应用程序。 |
LsaSetDomainInformationPolicy | 将域信息设置到 Policy 对象。 |
LsaSetForestTrustInformation | 为指定本地安全机构 TrustedDomain 对象设置林信任信息。 |
身份验证包实现的函数
自定义身份验证包必须实现这些函数,而这些函数将由本地安全机构 (LSA) 进行调用。 这些函数由 Microsoft 提供的 MSV1_0 和 Kerberos 身份验证包来实现。
函数 | 说明 |
---|---|
LsaApCallPackage | 当使用受信任连接的应用程序在对 LsaCallAuthenticationPackage 的调用中已指定身份验证包的标识符时进行调用。 此函数为登录应用程序提供了一种直接与身份验证包进行通信的方法。 |
LsaApCallPackagePassthrough | 当对直通登录请求的 LsaCallAuthenticationPackage 的调用中已指定身份验证包的标识符时进行调用。 |
LsaApCallPackageUntrusted | 当使用不受信任连接的应用程序在对 LsaCallAuthenticationPackage 的调用中已指定身份验证包的标识符时进行调用。 此函数可用于与没有 SeTcbPrivilege 权限的进程进行通信。 |
LsaApInitializePackage | 在系统初始化期间进行调用,以允许身份验证包执行初始化任务。 |
LsaApLogonTerminated | 在登录会话结束时进行调用,以允许身份验证包释放为登录会话分配的所有资源。 |
LsaApLogonUser | 在对 LsaLogonUser 的调用中已指定身份验证包时进行调用。 此函数会对安全主体的登录数据进行身份验证。 |
LsaApLogonUserEx | 与 LsaApLogonUser 相同,而不同之处在于它会返回工作站名称以进行审核。 身份验证包可实现 LsaApLogonUser、LsaApLogonUserEx 或 LsaApLogonUserEx2。 它无需全部实现它们。 |
LsaApLogonUserEx2 | 与 LsaApLogonUserEx 相同,但不同之处在于它会返回安全主体的主要凭据和补充凭据。 身份验证包可实现 LsaApLogonUser、LsaApLogonUserEx 或 LsaApLogonUserEx2。 它无需全部实现它们。 |
身份验证包调用的 LSA 函数
可从自定义身份验证包调用以下本地安全机构 (LSA) 函数。 当 LSA 调用 LsaApInitializePackage 以初始化包时,它会传递一个支持函数表。
函数 | 说明 |
---|---|
AddCredential | 将凭据添加到登录会话。 |
AllocateClientBuffer | 在客户端的地址空间中分配缓冲区。 |
AllocateLsaHeap | 分配必须从身份验证包返回到 LSA 的缓冲区。 |
CopyFromClientBuffer | 将客户端地址空间中缓冲区的内容复制到本地缓冲区中。 |
CopyToClientBuffer | 将本地缓冲区的内容复制到客户端的地址空间中。 |
CreateLogonSession | 由身份验证包用于创建登录会话。 |
DeleteCredential | 删除现有凭据。 |
DeleteLogonSession | 清理在确定用户的身份验证信息是否合法时所创建的全部登录会话。 |
FreeClientBuffer | 释放先前使用 AllocateClientBuffer 函数分配的客户端缓冲区。 |
FreeLsaHeap | 释放先前使用 AllocateLsaHeap 函数分配的缓冲区。 |
GetCredentials | 检索先前由 AddCredential 缓存的凭据。 |
子身份验证函数
Microsoft 提供的身份验证包可调用以下子身份验证函数,从而提供用户创建的其他登录身份验证。
函数 | 说明 |
---|---|
Msv1_0SubAuthenticationFilter | 执行特定于域控制器的用户登录身份验证。 |
Msv1_0SubAuthenticationRoutine | 执行特定于客户端/服务器的身份验证。 |
凭据管理函数
以下主题提供了凭据管理函数的参考信息。
主题 | 说明 |
---|---|
凭据管理 UI 函数 | 详细说明用于凭据管理 UI 的函数。 |
低级凭据管理函数 | 详细说明用于低级凭据管理的函数。 |
凭据管理通知函数 | 详细说明由凭据管理器实现以便在身份验证信息更改时接收通知的函数。 |
凭据管理 UI 函数
凭据管理 UI 函数如下。
函数 | 说明 |
---|---|
CredUICmdLinePromptForCredentials | 提示提供并接受来自在命令行程序中操作的用户的用户凭据信息。 |
CredUIConfirmCredentials | 确认由 CredUIPromptForCredentials 或 CredUICmdLinePromptForCredentials 所返回凭据的有效性。 |
CredUIParseUserName | 从完全限定用户名中提取域和用户帐户名称。 |
CredUIPromptForCredentials | 显示一个用于接受来自用户的凭据信息的对话框。 |
CredUIPromptForWindowsCredentials | 创建并显示一个可配置的对话框,而该对话框允许用户使用本地计算机上安装的任意凭据提供程序来提供凭据信息。 |
CredUIReadSSOCredW | 检索单个登录凭据的对应用户名。 |
CredUIStoreSSOCredW | 存储单个登录凭据。 |
低级凭据管理函数
低级凭据管理函数如下。
函数 | 说明 |
---|---|
CredDelete | 从用户的凭据集中删除凭据。 |
CredEnumerate | 列出用户的凭据集中的凭据。 |
CredFindBestCredential | 搜索 Credentials Management (CredMan) 数据库中是否存在与当前登录会话关联且与指定目标资源最匹配的通用凭据集。 |
CredFree | 释放用于凭据管理函数所返回的任意缓冲区的内存。 |
CredGetSessionTypes | 检索当前登录会话支持的最长持久性。 |
CredGetTargetInfo | 检索已命名资源的所有已知目标名称信息。 |
CredIsMarshaledCredential | 确定指定的用户名字符串是否为先前由 CredMarshalCredential 封送的封送凭据。 |
CredIsProtected | 指定是否由对 CredProtect 函数的上一次调用对指定的凭据进行加密。 |
CredMarshalCredential | 将凭据转换为文本字符串。 |
CredPackAuthenticationBuffer | 将字符串用户名和密码转换为身份验证缓冲区。 |
CredProtect | 对指定凭据进行加密,以便只有当前安全上下文才能对其解密。 |
CredRead | 从用户的凭据集中读取凭据。 |
CredReadDomainCredentials | 读取用户的凭据集中的域凭据。 |
CredRename | 从用户的凭据集中重命名凭据。 |
CredUnmarshalCredential | 将封送的凭据字符串转换回其非封送形式。 |
CredUnPackAuthenticationBuffer | 将调用 CredUIPromptForWindowsCredentials 函数所返回的身份验证缓冲区转换为字符串用户名和密码。 |
CredUnprotect | 解密先前使用 CredProtect 函数来加密的凭据。 |
CredWrite | 在用户的凭据集中创建新凭据或修改现有凭据。 |
CredWriteDomainCredentials | 将域凭据写入用户的凭据集中。 |
凭据管理通知函数
以下函数由凭据管理器实现,以便在身份验证信息更改时接收通知。
函数 | 说明 |
---|---|
NPLogonNotify | MPR 会调用此函数以通知凭据管理器出现登录事件,从而允许凭据管理器返回登录脚本。 |
NPPasswordChangeNotify | MPR 会调用此函数以通知凭据管理器密码更改事件。 |
智能卡函数
智能卡 SDK 提供以下函数。
SASL 函数
简单身份验证和安全层 (SASL) 提供以下函数。
函数 | 说明 |
---|---|
SaslAcceptSecurityContext | 包装对 SSPI AcceptSecurityContext(常规)函数的标准调用,并包括创建 SASL 服务器 Cookie。 |
SaslEnumerateProfiles | 列出提供 SASL 接口的包。 |
SaslGetContextOption | 检索指定 SASL 上下文的指定属性。 |
SaslGetProfilePackage | 返回指定包的包信息。 |
SaslIdentifyPackage | 返回与指定 SASL 协商缓冲区匹配的协商前缀。 |
SaslInitializeSecurityContext | 包装对 SSPI InitializeSecurityContext(常规)函数的标准调用,并处理来自服务器的 SASL 服务器 Cookie。 |
SaslSetContextOption | 设置指定 SASL 上下文的指定属性的值。 |
其他函数
用于身份验证的其他函数如下。