SpAcquireCredentialsHandleFn 回调函数 (ntsecpkg.h)

调用以获取主体 凭据的句柄。 如果调用方无权访问凭据,则 安全包 可以拒绝对调用方的访问。

如果凭据句柄返回到调用方,则包还应指定句柄的过期时间。

语法

SpAcquireCredentialsHandleFn Spacquirecredentialshandlefn;

NTSTATUS Spacquirecredentialshandlefn(
  [in]  PUNICODE_STRING PrincipalName,
  [in]  ULONG CredentialUseFlags,
  [in]  PLUID LogonId,
  [in]  PVOID AuthorizationData,
        PVOID GetKeyFunciton,
  [in]  PVOID GetKeyArgument,
  [out] PLSA_SEC_HANDLE CredentialHandle,
  [out] PTimeStamp ExpirationTime
)
{...}

参数

[in] PrincipalName

可选。 指向 UNICODE_STRING 结构的指针,该结构包含请求其凭据 的安全主体 的名称。 如果此值为 NULL,则调用方请求调用方正在其 安全上下文 中执行的用户凭据的句柄。

[in] CredentialUseFlags

指示如何使用凭据的标志。 以下值有效。

含义
SECPKG_CRED_INBOUND
凭据将与 AcceptSecurityContext (General) 函数一起使用。
SECPKG_CRED_OUTBOUND
凭据将与 InitializeSecurityContext (General) 函数一起使用。

[in] LogonId

可选。 指向包含安全主体登录标识符LUID 的指针。

[in] AuthorizationData

可选。 指向补充身份验证数据的指针。

GetKeyFunciton

[in] GetKeyArgument

指向与 GetKeyFunction 函数一起使用的参数的指针。

[out] CredentialHandle

指向接收凭据 的LSA_SEC_HANDLE 的指针。 使用完凭据后,通过调用 SpFreeCredentialsHandle 函数释放句柄。

[out] ExpirationTime

指向接收凭据句柄过期时间的 TimeStamp 的指针。

返回值

如果函数成功,则返回STATUS_SUCCESS。

如果函数失败,则返回一个 NTSTATUS 代码,用于指示它失败的原因。 下表列出了失败的常见原因以及应返回的错误代码。

返回代码 说明
SEC_E_NOT_OWNER
拒绝调用方访问。
SEC_E_NO_CREDENTIALS
没有可用于指定主体的凭据。

注解

该包可以使用 本地安全机构 (LSA) 支持函数来确定是否应向调用方授予对所请求凭据的访问权限。

通过调用 SpFreeCredentialsHandle 函数释放从 SpAcquireCredentialsHandle 获取的 凭据。

SSP/AP 必须实现 SpAcquireCredentialsHandle 函数;但是,为实现提供的实际名称由开发人员决定。

SpLsaModeInitialize 函数接收的 SECPKG_FUNCTION_TABLE 结构中提供了指向 SpAcquireCredentialsHandle 函数的指针。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 ntsecpkg.h

另请参阅

SECPKG_FUNCTION_TABLE

SpFreeCredentialsHandle

SpLsaModeInitialize