身份验证函数
身份验证函数根据使用情况进行分类,如下所示:
- 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 (General) | 获取指定主体的预先存在凭据的句柄。 |
ExportSecurityContext | 将安全上下文导出到上下文缓冲区中。 |
FreeCredentialsHandle | 释放凭据句柄和关联的资源。 |
ImportSecurityContext | 使用 ExportSecurityContext 导出的安全上下文导入当前进程。 |
QueryCredentialsAttributes | 检索凭据的属性,例如与凭据关联的名称。 |
上下文管理
SSPI 上下文管理功能创建和使用 安全上下文。
在通信链接中,客户端和服务器合作创建共享的安全上下文。 客户端和服务器都使用具有 消息支持 功能的安全上下文,以确保连接期间的消息 完整性 和 隐私 性。
安全上下文是不透明的安全对象。 安全上下文中的信息对应用程序不可用。 上下文管理功能创建和使用上下文句柄,而安全包取消引用上下文句柄以访问其安全内容。
上下文句柄是 {0x00000000, 0x00000000} 和 {0xFFFFFFFF, 0xFFFFFFFE} 之间的 64 位值。
以下函数用于上下文管理。
函数 | 说明 |
---|---|
AcceptSecurityContext (常规) | 由服务器用来基于从客户端收到的不透明消息创建 安全上下文 。 |
ApplyControlToken | 将补充安全消息应用于现有安全上下文。 |
CompleteAuthToken | 完成身份验证令牌。 此函数由协议(如 DCE)使用,这些协议需要在传输应用程序更新某些消息参数后修改安全信息。 |
DeleteSecurityContext | 释放安全上下文和关联的资源。 |
FreeContextBuffer | 释放由安全包分配的内存缓冲区。 |
ImpersonateSecurityContext | 模拟安全上下文,以在系统中显示为客户端。 |
InitializeSecurityContext (常规) | 由客户端通过生成要传递给服务器的不透明消息来启动安全上下文。 |
QueryContextAttributes (常规) | 使传输应用程序能够查询安全上下文的某些属性的安全包。 |
QuerySecurityContextToken | 获取客户端安全上下文的访问令牌并直接使用它。 |
SetContextAttributes | 允许传输应用程序为安全包设置安全上下文的属性。 只有 Schannel 安全包支持此函数。 |
RevertSecurityContext | 允许 安全包 停止模拟调用方并还原其自己的 安全上下文。 |
消息支持
SSPI 消息支持功能使应用程序能够传输和接收防篡改消息,以及加密和解密消息。 这些函数适用于包含消息的一个或多个缓冲区,以及上下文管理功能创建的安全上下文。 函数的行为因使用连接、 数据报还是流上下文而异。 有关这些差异的说明,请参阅 SSPI 上下文语义。
以下函数为消息提供安全支持。
函数 | 说明 |
---|---|
DecryptMessage (常规) | 使用安全上下文中的会话密钥解密加密的消息。 |
EncryptMessage (常规) | 使用安全上下文中的会话密钥加密消息。 |
MakeSignature | 生成消息的加密校验和,还包含防止消息丢失或插入的排序信息。 |
VerifySignature | 验证使用 MakeSignature 函数由发件人签名的邮件的签名。 |
由 SSP/AP 实现的函数
以下函数由安全支持提供程序/身份验证包中包含的安全包实现, (SSP/AP) 。
在下表中,第一组函数由 Windows XP SSP/AP 安全包实现。 第二组函数仅由 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) 调用一次,以提供包含常规安全信息和支持功能的调度表的安全 包 。 |
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) 函数来访问用户模式功能。 安全提供程序 DLL 使用包提供的 SECPKG_USER_FUNCTION_TABLE 映射 SSPI 函数。
由 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 | 关闭安全帐户管理器数据库条目的句柄。 |
ConvertAuthDataToToken | 将授权数据转换为用户令牌。 |
CrackSingleName | 将名称从一种格式转换为另一种格式。 |
CreateSharedMemory | 创建客户端与 SSP/AP 之间共享的内存部分。 |
CreateThread | 创建新线程。 |
CreateToken | 创建令牌。 |
DeleteSharedMemory | 删除共享内存的一部分。 |
DuplicateHandle | 复制句柄。 |
FreeReturnBuffer | 释放 LSA 分配的缓冲区。 |
FreeSharedMemory | 释放共享内存的一部分。 |
GetAuthDataForUser | 检索用户帐户的授权数据。 |
GetCallInfo | 检索有关最近函数调用的信息。 |
GetClientInfo | 检索有关安全包的用户进程的信息。 |
GetUserAuthData | 返回用户的授权数据。 |
GetUserCredentials | 尚未实现。 |
ImpersonateClient | 由 安全包 调用以模拟包用户。 |
MapBuffer | 将 SecBuffer 结构映射到 安全支持提供程序/身份验证包 (SSP/AP) 的地址空间。 |
OpenSamUser | 检索 安全帐户管理器 (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 | 当 GINA DLL 应显示消息时,Winlogon 调用此函数。 |
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 | 在 凭据管理 (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 上下文的指定属性的值。 |
其他函数
下面是用于身份验证的其他函数。
反馈
提交和查看相关反馈