KERB_RETRIEVE_TKT_REQUEST 结构 (ntsecapi.h)

KERB_RETRIEVE_TKT_REQUEST 结构包含用于检索票证的信息。

LsaCallAuthenticationPackage 使用它。Kerberos 票证在 Internet RFC 4120 中定义。 有关详细信息,请参阅 http://www.ietf.org

语法

typedef struct _KERB_RETRIEVE_TKT_REQUEST {
  KERB_PROTOCOL_MESSAGE_TYPE MessageType;
  LUID                       LogonId;
  UNICODE_STRING             TargetName;
  ULONG                      TicketFlags;
  ULONG                      CacheOptions;
  LONG                       EncryptionType;
  SecHandle                  CredentialsHandle;
} KERB_RETRIEVE_TKT_REQUEST, *PKERB_RETRIEVE_TKT_REQUEST;

成员

MessageType

KERB_PROTOCOL_MESSAGE_TYPE 指示所发出请求类型的值。 此成员必须设置为 KerbRetrieveEncodedTicketMessage

LogonId

包含登录会话标识符的 LUID 结构。 对于当前用户的登录会话,这可以为零。 如果不是零,则调用方必须具有 SeTcbPrivilege 权限集。 如果此操作失败,Kerberos 身份验证包会将 LsaCallAuthenticationPackageProtocolStatus 参数设置为STATUS_ACCESS_DENIED。

TargetName

包含 目标服务名称的UNICODE_STRING。

TicketFlags

包含指定检索的票证的用途的标志。 如果 TicketFlags 设置为零,并且缓存中存在匹配的票证,则无论其标志值如何,都将返回该票证。 如果缓存中没有匹配项,则将请求具有默认标志值的新票证。

如果此成员未设置为零,则不会缓存返回的票证。

CacheOptions

指示用于搜索缓存的选项。 将此成员设置为零以指示应搜索缓存;如果未找到票证,则应请求新票证。

如果此成员未设置为零,则不会缓存返回的票证。

CacheOptions 可以包含以下值。

含义
KERB_RETRIEVE_TICKET_DONT_USE_CACHE
1
始终请求新票证;不要搜索缓存。

如果获得了票证,Kerberos 身份验证包将在 LsaCallAuthenticationPackage 函数的 ProtocolStatus 参数中返回STATUS_SUCCESS。

KERB_RETRIEVE_TICKET_USE_CREDHANDLE
4
使用 CredentialsHandle 成员而不是 LogonId 来标识登录会话。 凭据句柄用作为其检索票证的客户端凭据

注意 此选项不适用于在 64 位 Windows 上运行的基于 32 位 Windows 的应用程序。

KERB_RETRIEVE_TICKET_USE_CACHE_ONLY
2
仅返回以前缓存的票证。

如果未找到此类票证,Kerberos 身份验证包将在 LsaCallAuthenticationPackage 函数的 ProtocolStatus 参数中返回STATUS_OBJECT_NAME_NOT_FOUND。

KERB_RETRIEVE_TICKET_AS_KERB_CRED
8
以 Kerberos 凭据的形式返回票证。 Kerberos 票证在 Internet RFC 4120 中定义为KRB_CRED。 有关详细信息,请参阅 http://www.ietf.org
KERB_RETRIEVE_TICKET_WITH_SEC_CRED
10
未实现。
KERB_RETRIEVE_TICKET_CACHE_TICKET
20
返回当前位于缓存中的票证。 如果票证不在缓存中,则会请求该票证,然后缓存该票证。 此标志不应与 KERB_RETRIEVE_TICKET_DONT_USE_CACHE 标志一起使用。

Windows XP SP1 及更早版本以及 Windows Server 2003: 此选项不可用。

KERB_RETRIEVE_TICKET_MAX_LIFETIME
40
返回策略允许的最大时间的新票证。 之后将缓存代码。 使用此标志意味着未设置KERB_RETRIEVE_TICKET_USE_CACHE_ONLY和KERB_RETRIEVE_TICKET_CACHE_TICKET。

Windows Vista、Windows Server 2008、Windows XP SP1 及更早版本以及 Windows Server 2003: 此选项不可用。

EncryptionType

指定要用于请求的票证的加密类型。 如果此成员未设置为零,则不会缓存返回的票证。

此成员可以具有以下值之一。

含义
KERB_ETYPE_DES_CBC_CRC
通过 CRC-32 校验和在密码块链接模式下使用 DES 加密。
KERB_ETYPE_DES_CBC_MD4
通过 MD4 校验和在密码块链接模式下使用 DES 加密。
KERB_ETYPE_DES_CBC_MD5
通过 MD5 校验和在密码块链接模式下使用 DES 加密。
KERB_ETYPE_NULL
不使用加密。
KERB_ETYPE_RC4_HMAC_NT
将 RC4 流密码与 Windows 使用的基于哈希的消息身份验证代码 (MAC) 配合使用。
KERB_ETYPE_RC4_MD4
将 RC4 流密码与 MD4 哈希函数一起使用。
>127
大于 127 的值保留给本地值,可能会更改,恕不另行通知。

CredentialsHandle

用于代替登录会话标识符的 SSPI 凭据句柄。

要求

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