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;
Members
Flags
一個位元成員,用來識別憑證的特徵。 未定義位元應初始化為零,且不得做其他修改以允許未來增強。
| 價值觀 | Meaning |
|---|---|
|
若憑證未持續存在於 CredentialBlob ,且該憑證在此登入會話中未被寫入,則為位元設定。 這個位元在輸入時會被忽略,查詢時會自動設定。
若類型為 CRED_TYPE_DOMAIN_CERTIFICATE,憑證 Blob 不會在登入會話間持久化,因為憑證的 PIN 是非常敏感的資訊。 事實上,當憑證寫入憑證管理器時,PIN 會傳遞給與憑證相關的 CSP。 CSP 將執行與該證書相符的 PIN 保留政策。 若類型為CRED_TYPE_DOMAIN_PASSWORD或CRED_TYPE_DOMAIN_CERTIFICATE,認證套件在使用標記為CRED_FLAGS_PROMPT_NOW的憑證時,總是在驗證嘗試中失敗。 應用程式(通常透過金鑰環介面)會提示使用者輸入密碼。 應用程式會儲存憑證並重新嘗試驗證。 因為憑證是最近寫入的,認證套件現在會收到一個沒有標記為CRED_FLAGS_PROMPT_NOW的憑證。 |
|
若此憑證的 TargetName 成員與 UserName 成員值相同,則為 Bit 設定。 此類憑證是設計用來儲存特定使用者的 CredentialBlob 。 欲了解更多資訊,請參閱 CredMarshalCredential 函式。
此位元只能在類型為CRED_TYPE_DOMAIN_PASSWORD或CRED_TYPE_DOMAIN_CERTIFICATE時指定。 |
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 是包含通配字元序列的網域名稱,語法則是網域名稱後接反斜線和星號(*),表示目標名稱是該網域(或領域)成員的任何伺服器。
如果 TargetName 是一個包含通配字元序列的 DNS 網域名稱,那麼 TargetAlias 成員可以是 NetBIOS 網域名稱,該網域對同一網域使用通配碼序列。
如果 TargetName 指定了一個 DFS 共享,例如 DfsRoot\DfsShare,那麼這個憑證就會匹配到該 DFS 共享以及透過該 DFS 分享存取的任何伺服器。
若 TargetName 是一個單星號(*),則此憑證可匹配任何伺服器名稱。
如果 TargetName CRED_SESSION_WILDCARD_NAME,這個憑證就能匹配任何伺服器名稱。 此憑證在一個星號前匹配,且僅在持久 化 為 CRED_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,則包含 Unicode 的 UserName 密碼明文。 CredentialBlob 和 CredentialBlobSize 成員不包含尾隨的零字元。 此外, CRED_TYPE_DOMAIN_PASSWORD 的成員只能被認證套件讀取。
若 Type 成員為 CRED_TYPE_DOMAIN_CERTIFICATE,則該成員包含 UserName 的明確測試 Unicode PIN碼。 CredentialBlob 和 CredentialBlobSize 成員不包含尾隨的零字元。 此外,這個成員只能被認證套件讀取。
若 類型 成員為 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,該成員可為 網域名稱使用者名稱 或 UPN。
若憑證 類型 為 CRED_TYPE_DOMAIN_CERTIFICATE,該會員必須是透過使用 CertCredential 呼叫 CredMarshalCredential 建立的已編組憑證參考。
若憑證 類型 為 CRED_TYPE_GENERIC,該成員可非 NULL,但憑證管理器會忽略該成員。
此成員不得超過 CRED_MAX_USERNAME_LENGTH (513)字元。
備註
備註
wincred.h 標頭定義 CREDENTIAL 為別名,根據 UNICODE 預處理器常數的定義自動選擇此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型 的慣例。
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
| 支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
| Header | Wincred.h |