CREDENTIALA 結構 (wincred.h)
CREDENTIAL 結構包含個別認證。
語法
typedef struct _CREDENTIALA {
DWORD Flags;
DWORD Type;
LPSTR TargetName;
LPSTR Comment;
FILETIME LastWritten;
DWORD CredentialBlobSize;
LPBYTE CredentialBlob;
DWORD Persist;
DWORD AttributeCount;
PCREDENTIAL_ATTRIBUTEA Attributes;
LPSTR TargetAlias;
LPSTR UserName;
} CREDENTIALA, *PCREDENTIALA;
成員
Flags
識別認證特性的位成員。 未定義的位應該初始化為零,否則不會改變以允許未來的增強功能。
值 | 意義 |
---|---|
|
如果認證未保存 CredentialBlob ,而且此登入工作階段期間尚未寫入認證,則設定位。 在輸入上忽略此位,並在查詢時自動設定。
如果 Type是CRED_TYPE_DOMAIN_CERTIFICATE, 則 CredentialBlob 不會在登入會話之間保存,因為憑證的 PIN 非常機密資訊。 事實上,當認證寫入認證管理員時,PIN 會傳遞至與憑證相關聯的 CSP。 CSP 會強制執行適用於憑證的 PIN 保留原則。 如果 Type是CRED_TYPE_DOMAIN_PASSWORD 或 CRED_TYPE_DOMAIN_CERTIFICATE,則使用標示為 CRED_FLAGS_PROMPT_NOW的認證時,驗證套件一律會失敗。 應用程式通常會透過金鑰環 UI (,) 提示使用者輸入密碼。 應用程式會儲存認證並重試驗證。 因為最近已撰寫認證,所以驗證套件現在會取得未標示為CRED_FLAGS_PROMPT_NOW的認證。 |
|
如果此認證已將 TargetName 成員設定為與 UserName 成員相同的值,則會設定位。 這類認證是專為儲存特定使用者的 CredentialBlob 而設計的認證。 如需詳細資訊,請參閱 CredMarshalCredential 函式。
只有在 Type是CRED_TYPE_DOMAIN_PASSWORD 或 CRED_TYPE_DOMAIN_CERTIFICATE時,才能指定這個位。 |
Type
認證的類型。 建立認證之後,就無法變更此成員。 下列值有效。
TargetName
認證的名稱。 TargetName 和 Type 成員可唯一識別認證。 建立認證之後,就無法變更此成員。 相反地,應該刪除具有舊名稱的認證,以及建立新名稱的認證。
如果 Type是CRED_TYPE_DOMAIN_PASSWORD 或 CRED_TYPE_DOMAIN_CERTIFICATE,則此成員會識別要使用的認證伺服器或伺服器。 成員為 NetBIOS 或 DNS 伺服器名稱、包含通配符的 DNS 主機名後綴、包含通配符序列的 NetBIOS 或 DNS 功能變數名稱,或星號。
如果 TargetName 是 DNS 主機名, TargetAlias 成員可以是主機的 NetBIOS 名稱。
如果 TargetName 是包含通配符的 DNS 主機名後綴,則 DNS 主機名的最左邊標籤是星號 (*) ,這表示目標名稱是名稱以指定名稱結尾的任何伺服器,例如 *.microsoft.com。
如果 TargetName 是包含通配符序列的功能變數名稱,語法就是功能變數名稱,後面接著反斜杠和星號 (*) ,這表示目標名稱是具名網域成員的任何伺服器 (或領域) 。
如果 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
上次修改認證的時間,以國際標準時間 (Greenwich Mean Time) 。 針對寫入作業,會忽略這個成員的值。
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 的帳戶用戶名稱。
如果認證類型CRED_TYPE_DOMAIN_PASSWORD,此成員可以是 DomainNameUserName 或 UPN。
如果認證類型CRED_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 |