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
未簽署的長 旗標,表示可談判 安全性套件所使用的類型。
價值 | 意義 |
---|---|
|
所有數據都在一個緩衝區中。 |
|
與 Kerberos安全性支援提供者 (SSP) 搭配使用。 認證僅適用於身分識別。 Kerberos 套件會導向至不包含票證中的授權數據。 |
|
認證採用 ANSI 格式。 |
|
認證格式為 Unicode。 |
|
當認證類型為密碼時,此旗標的存在會指定結構為在線標識碼認證。
DomainOffset 和 DomainLength 成員會對應至在線標識碼提供者名稱。
Windows Server 2008 R2 和 Windows 7:不支援此旗標。 |
|
結構會由 SspiEncryptAuthIdentity 函式或具有 SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_PROCESS 選項的 SspiEncryptAuthIdentityEx 函式加密。 它只能由同一個進程解密。
Windows Server 2008 R2 和 Windows 7:不支援此旗標。 |
|
結構會由 SspiEncryptAuthIdentityEx 函式與 SYSTEM 安全性內容下的 SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON 選項加密。 它只能由以 SYSTEM 身分執行的線程解密。
Windows Server 2008 R2 和 Windows 7:不支援此旗標。 |
|
結構是由 SspiEncryptAuthIdentityEx 函式所加密,且具有非 SYSTEM 安全性內容下SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON選項。 它只能由在加密所在的相同登入會話中執行的線程解密。
Windows Server 2008 R2 和 Windows 7:不支援此旗標。 |
|
驗證身分識別緩衝區 cbStructureLength + 8 個填補位元組,這是就地加密或解密身分識別所需的位元組。 |
PackageListOffset
結構開頭到支援套件清單開頭的位移。
PackageListLength
支援的套件清單大小,以位元組為單位。
言論
此驗證識別緩衝區可以從數個認證 API 傳回,例如,GetSerialization 方法和 CredUIPromptForWindowsCredential 和 SspiPromptForCredentials 函式。
結構描述驗證識別緩衝區的標頭,而且數據會附加在 結構的結尾。 雖然緩衝區大小是由 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 結構的其他定義。
應用程式不應該直接查詢或設定 旗標 成員。 使用 SspiIsAuthIdentityEncrypted、SspiEncryptAuthIdentityEx和 SspiDecryptAuthIdentityEx 函式來管理 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 |