共用方式為


SEC_WINNT_AUTH_IDENTITY_EX2結構 (sspi.h)

包含驗證身分識別的相關信息。 SEC_WINNT_AUTH_IDENTITY_EX2 結構包含提供給 AcquireCredentialsHandle 函式的驗證數據。

語法

typedef struct _SEC_WINNT_AUTH_IDENTITY_EX2 {
  unsigned long  Version;
  unsigned short cbHeaderLength;
  unsigned long  cbStructureLength;
  unsigned long  UserOffset;
  unsigned short UserLength;
  unsigned long  DomainOffset;
  unsigned short DomainLength;
  unsigned long  PackedCredentialsOffset;
  unsigned short PackedCredentialsLength;
  unsigned long  Flags;
  unsigned long  PackageListOffset;
  unsigned short PackageListLength;
} SEC_WINNT_AUTH_IDENTITY_EX2, *PSEC_WINNT_AUTH_IDENTITY_EX2;

成員

Version

結構的版本號碼。 這必須 SEC_WINNT_AUTH_IDENTITY_VERSION_2

cbHeaderLength

結構標頭的大小,以位元組為單位。

cbStructureLength

結構的大小,以位元組為單位。

UserOffset

結構開頭到用戶名稱字串開頭的位移。

UserLength

用戶名稱字串的大小,以位元組為單位。

DomainOffset

結構開頭到域名字符串開頭的位移。

身分識別認證應該包含識別提供者名稱,而不是功能變數名稱。

DomainLength

域名字串的大小,以位元組為單位。

PackedCredentialsOffset

結構開頭到封裝認證開頭的位移。

封裝的認證是一種 SEC_WINNT_AUTH_PACKED_CREDENTIALS 結構,其中包含唯一指定認證類型的認證類型。

PackedCredentialsLength

包裝認證字串的大小,以位元組為單位。

Flags

未簽署的長 旗標,表示可談判 安全性套件所使用的類型

價值 意義
SEC_WINNT_AUTH_IDENTITY_MARSHALLED
4 (0x4)
所有數據都在一個緩衝區中。
SEC_WINNT_AUTH_IDENTITY_ONLY
8 (0x8)
Kerberos安全性支援提供者 (SSP) 搭配使用。 認證僅適用於身分識別。 Kerberos 套件會導向至不包含票證中的授權數據。
SEC_WINNT_AUTH_IDENTITY_ANSI
1 (0x1)
認證採用 ANSI 格式。
SEC_WINNT_AUTH_IDENTITY_UNICODE
2 (0x2)
認證格式為 Unicode。
SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER
524288 (0x80000)
當認證類型為密碼時,此旗標的存在會指定結構為在線標識碼認證。 DomainOffsetDomainLength 成員會對應至在線標識碼提供者名稱。

Windows Server 2008 R2 和 Windows 7:不支援此旗標。

SEC_WINNT_AUTH_IDENTITY_FLAGS_PROCESS_ENCRYPTED
16 (0x10)
結構會由 SspiEncryptAuthIdentity 函式或具有 SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_PROCESS 選項的 SspiEncryptAuthIdentityEx 函式加密。 它只能由同一個進程解密。

Windows Server 2008 R2 和 Windows 7:不支援此旗標。

SEC_WINNT_AUTH_IDENTITY_FLAGS_SYSTEM_PROTECTED
32 (0x20)
結構會由 SspiEncryptAuthIdentityEx 函式與 SYSTEM 安全性內容下的 SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON 選項加密。 它只能由以 SYSTEM 身分執行的線程解密。

Windows Server 2008 R2 和 Windows 7:不支援此旗標。

SEC_WINNT_AUTH_IDENTITY_FLAGS_USER_PROTECTED
64 (0x40)
結構是由 SspiEncryptAuthIdentityEx 函式所加密,且具有非 SYSTEM 安全性內容下SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON選項。 它只能由在加密所在的相同登入會話中執行的線程解密。

Windows Server 2008 R2 和 Windows 7:不支援此旗標。

SEC_WINNT_AUTH_IDENTITY_FLAGS_RESERVED
65536 (0x10000)
驗證身分識別緩衝區 cbStructureLength + 8 個填補位元組,這是就地加密或解密身分識別所需的位元組。

PackageListOffset

結構開頭到支援套件清單開頭的位移。

PackageListLength

支援的套件清單大小,以位元組為單位。

言論

此驗證識別緩衝區可以從數個認證 API 傳回,例如,GetSerialization 方法和 CredUIPromptForWindowsCredentialSspiPromptForCredentials 函式。

結構描述驗證識別緩衝區的標頭,而且數據會附加在 結構的結尾。 雖然緩衝區大小是由 cbStructureLength 成員指定,但實際緩衝區大小可以大於或小於 cbStructureLength。 某些函式,例如 SspiValidateAuthIdentity,會將指標,而非緩衝區大小作為輸入。 因此,這些函式可以驗證內部緩衝區數據,但無法驗證緩衝區大小。 這可能會導致讀取或寫入緩衝區範圍以外的數據。 為了避免在處理不受信任的識別緩衝區時發生緩衝區滿溢,應用程式應該呼叫 SspiUnmarshalAuthIdentity,以取得具有已驗證大小的識別結構的指標,然後將該指標傳遞至函式。

SEC_WINNT_AUTH_IDENTITY_EX2 結構可由 QueryContextAttributes(CredSSP) 傳回,並由 acquireCredentialsHandle(CredSSP)LsaLogonUser和其他識別提供者介面取用。

SEC_WINNT_AUTH_PACKED_CREDENTIALS 可以包含定義為SEC_WINNT_AUTH_DATA_TYPE_PASSWORD的密碼認證類型。 此認證類型描述網域使用者和其他在線身分識別的密碼認證。 應用程式必須定義_SEC_WINNT_AUTH_TYPES,以編譯參考此認證類型的程序代碼,以及 SEC_WINNT_AUTH_PACKED_CREDENTIALS 結構的其他定義。

應用程式不應該直接查詢或設定 旗標 成員。 使用 SspiIsAuthIdentityEncryptedSspiEncryptAuthIdentityExSspiDecryptAuthIdentityEx 函式來管理 SEC_WINNT_AUTH_IDENTITY_EX2 結構的加密和解密。

識別提供者必須明確檢查或設定SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER和域名字段,以區分其密碼認證與網域密碼和另一個識別提供者的密碼。

CredPackAuthenticationBuffer 函式可以使用 CRED_PACK_ID_PROVIDER_CREDENTIALS 選項來呼叫,以SEC_WINNT_AUTH_DATA_TYPE_PASSWORD認證類型的驗證數據建立 SEC_WINNT_AUTH_IDENTITY_EX2 結構,這是包含SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER值的 Flags 成員, 和 DomainOffset 成員設定為提供者名稱。

要求

要求 價值
最低支援的用戶端 Windows 7 [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2008 R2 [僅限傳統型應用程式]
標頭 sspi.h