CREDENTIALW 結構 (wincred.h)
CREDENTIAL 結構包含個別認證。
語法
typedef struct _CREDENTIALW {
DWORD Flags;
DWORD Type;
#if ...
wchar_t *TargetName;
#else
LPWSTR TargetName;
#endif
#if ...
wchar_t *Comment;
#else
LPWSTR Comment;
#endif
FILETIME LastWritten;
DWORD CredentialBlobSize;
LPBYTE CredentialBlob;
DWORD Persist;
DWORD AttributeCount;
PCREDENTIAL_ATTRIBUTEW Attributes;
#if ...
wchar_t *TargetAlias;
#else
LPWSTR TargetAlias;
#endif
#if ...
wchar_t *UserName;
#else
LPWSTR UserName;
#endif
} CREDENTIALW, *PCREDENTIALW;
成員
Flags
識別認證特性的位成員。 未定義的位應該初始化為零,而不會改變以允許未來的增強功能。
價值 | 意義 |
---|---|
|
如果認證未保存 CredentialBlob,而且認證尚未在此登入會話期間寫入,則為位集。 輸入上會忽略此位,並在查詢時自動設定。
如果 類型 是 CRED_TYPE_DOMAIN_CERTIFICATE,CredentialBlob 不會跨登入會話保存,因為憑證的 PIN 非常機密資訊。 事實上,當認證寫入認證管理員時,PIN 會傳遞至與憑證相關聯的 CSP。 CSP 會強制執行適用於憑證的 PIN 保留原則。 如果 類型 是 CRED_TYPE_DOMAIN_PASSWORD 或 CRED_TYPE_DOMAIN_CERTIFICATE,則使用標示為 CRED_FLAGS_PROMPT_NOW的認證時,驗證套件一律會失敗驗證嘗試。 應用程式(通常是透過金鑰通道 UI)提示使用者輸入密碼。 應用程式會儲存認證並重試驗證。 由於認證最近已寫入,因此驗證套件現在會取得未標示為CRED_FLAGS_PROMPT_NOW的認證。 |
|
如果此認證 TargetName 成員設定為與 UserName 成員相同的值,則會設定位。 這類認證是專為儲存特定使用者 CredentialBlob 而設計的認證。 如需詳細資訊,請參閱 CredMarshalCredential 函式。
只有當類型 是 |
Type
認證的類型。 建立認證之後,就無法變更此成員。 下列值有效。
TargetName
認證的名稱。 TargetName 和 Type 成員可唯一識別認證。 建立認證之後,就無法變更此成員。 相反地,應該刪除具有舊名稱的認證,並使用新名稱建立的認證。
如果 類型 是 CRED_TYPE_DOMAIN_PASSWORD 或 CRED_TYPE_DOMAIN_CERTIFICATE,則此成員會識別認證要使用的伺服器或伺服器。 成員是 NetBIOS 或 DNS 伺服器名稱、包含通配符的 DNS 主機名後綴、包含通配符序列的 NetBIOS 或 DNS 功能變數名稱,或是星號。
如果 TargetName 是 DNS 主機名,TargetAlias 成員可以是主機的 NetBIOS 名稱。
如果 TargetName 是包含通配符的 DNS 主機名後綴,則 DNS 主機名的最左邊捲標是星號 \,這表示目標名稱是名稱以指定名稱結尾的任何伺服器,例如 *.microsoft.com。
如果 TargetName 是包含通配符序列的功能變數名稱,則語法是功能變數名稱後面接著反斜杠和星號 (\*),表示目標名稱是具名網域 (或 realm) 成員的任何伺服器。
如果 TargetName 是包含通配符序列的 DNS 功能變數名稱,則 TargetAlias 成員可以是 NetBIOS 功能變數名稱,該功能變數名稱會針對相同的網域使用通配符序列。
如果 TargetName 指定 DFS 共用,例如,DfsRoot\DfsShare,則此認證會符合特定 DFS 共用,以及透過該 DFS 共用到達的任何伺服器。
如果 TargetName 為單一星號 ,則此認證會比對任何伺服器名稱。
如果 TargetName 為CRED_SESSION_WILDCARD_NAME,則此認證會比對任何伺服器名稱。 此認證會比對單一星號之前,而且只有在 PersistCRED_PERSIST_SESSION時才有效。 認證可由想要暫時覆寫預設認證的應用程式設定。
此成員不能超過 CRED_MAX_DOMAIN_TARGET_NAME_LENGTH (337) 個字元。
如果 類型 是CRED_TYPE_GENERIC,此成員應該識別除了實際目標之外,還使用認證的服務。 Microsoft建議名稱前面加上實作服務的公司名稱。 Microsoft會使用前置詞 「Microsoft」。 由 Microsoft 撰寫的服務應該附加其服務名稱,例如,Microsoft_RAS_TargetName。 此成員不能超過 CRED_MAX_GENERIC_TARGET_NAME_LENGTH (32767) 個字元。
此成員不區分大小寫。
Comment
描述此認證的使用者字串批註。 此成員不能超過 CRED_MAX_STRING_LENGTH (256) 個字元。
LastWritten
在國際標準時間(格林威治平均時間)中,認證上次修改的時間。 針對寫入作業,會忽略這個成員的值。
CredentialBlobSize
CredentialBlob 成員的大小,以位元組為單位。 這個成員不能大於 CRED_MAX_CREDENTIAL_BLOB_SIZE (5*512) 個字節。
CredentialBlob
認證的秘密數據。 CredentialBlob 成員可以讀取和寫入。
如果 Type 成員是 CRED_TYPE_DOMAIN_PASSWORD,此成員會包含 UserName的純文本 Unicode 密碼。 CredentialBlob 和 CredentialBlobSize 成員不包含尾端零字元。 此外,針對 CRED_TYPE_DOMAIN_PASSWORD,此成員只能由驗證套件讀取。
如果 Type 成員是 CRED_TYPE_DOMAIN_CERTIFICATE,此成員會包含 UserName的清除測試 Unicode PIN。 CredentialBlob 和 CredentialBlobSize 成員不包含尾端零字元。 此外,此成員只能由驗證套件讀取。
如果 Type 成員是 CRED_TYPE_GENERIC,則此成員是由應用程式定義。
認證必須是可攜式的。 應用程式應該確保 CredentialBlob 中的數據可攜式。 應用程式會定義 credentialBlob 中數據的位元組端和對齊方式,。
Persist
定義此認證的持續性。 這個成員可以讀取和寫入。
AttributeCount
要與認證相關聯的應用程式定義屬性數目。 這個成員可以讀取和寫入。 其值不能大於 CRED_MAX_ATTRIBUTES (64)。
Attributes
與認證相關聯的應用程式定義屬性。 這個成員可以讀取和寫入。
TargetAlias
TargetName 成員的別名。 這個成員可以讀取和寫入。 長度不能超過 CRED_MAX_STRING_LENGTH (256) 個字元。
如果認證 類型 是 CRED_TYPE_GENERIC,這個成員可以是非NULL,但認證管理員會忽略該成員。
UserName
用來連線到 targetName 帳戶的用戶名稱。
如果認證 Type 為 CRED_TYPE_DOMAIN_PASSWORD,此成員可以是 DomainName\UserName 或 UPN。
如果認證 TypeCRED_TYPE_DOMAIN_CERTIFICATE,此成員必須是使用 CertCredential 呼叫 CredMarshalCredential 所建立的封送處理憑證參考。
如果認證 類型 是 CRED_TYPE_GENERIC,這個成員可以是非NULL,但認證管理員會忽略該成員。
此成員不能超過 CRED_MAX_USERNAME_LENGTH (513) 個字元。
言論
注意
wincred.h 標頭會將 CREDENTIAL 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | wincred.h |