共用方式為


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;

Members

Flags

一個位元成員,用來識別憑證的特徵。 未定義位元應初始化為零,且不得做其他修改以允許未來增強。

價值觀 Meaning
CRED_FLAGS_PROMPT_NOW
2 (0x2)
若憑證未持續存在於 CredentialBlob ,且該憑證在此登入會話中未被寫入,則為位元設定。 這個位元在輸入時會被忽略,查詢時會自動設定。

若類型CRED_TYPE_DOMAIN_CERTIFICATE,憑證 Blob 不會在登入會話間持久化,因為憑證的 PIN 是非常敏感的資訊。 事實上,當憑證寫入憑證管理器時,PIN 會傳遞給與憑證相關的 CSP。 CSP 將執行與該證書相符的 PIN 保留政策。

若類型CRED_TYPE_DOMAIN_PASSWORDCRED_TYPE_DOMAIN_CERTIFICATE,認證套件在使用標記為CRED_FLAGS_PROMPT_NOW的憑證時,總是在驗證嘗試中失敗。 應用程式(通常透過金鑰環介面)會提示使用者輸入密碼。 應用程式會儲存憑證並重新嘗試驗證。 因為憑證是最近寫入的,認證套件現在會收到一個沒有標記為CRED_FLAGS_PROMPT_NOW的憑證。

CRED_FLAGS_USERNAME_TARGET
4(0x4)
若此憑證的 TargetName 成員與 UserName 成員值相同,則為 Bit 設定。 此類憑證是設計用來儲存特定使用者的 CredentialBlob 。 欲了解更多資訊,請參閱 CredMarshalCredential 函式。

此位元只能在類型為CRED_TYPE_DOMAIN_PASSWORDCRED_TYPE_DOMAIN_CERTIFICATE時指定。

Type

證書的類型。 該會員在憑證建立後無法更改。 以下數值有效。

價值觀 Meaning
CRED_TYPE_GENERIC
1(0x1)
這個證照是通用證照。 該憑證不會被任何特定的認證套件使用。 憑證會被安全儲存,但沒有其他顯著特徵。
CRED_TYPE_DOMAIN_PASSWORD
2 (0x2)
該憑證是密碼憑證,且專屬於 Microsoft 的認證套件。 NTLM、Kerberos 與 Negotiate 認證套件在連接指定目標時會自動使用此憑證。
CRED_TYPE_DOMAIN_CERTIFICATE
3(0x3)
憑證是憑證憑證,且專屬於 Microsoft 的認證套件。 Kerberos、Negotiate 和 Schannel 認證套件在連接指定目標時會自動使用此憑證。
CRED_TYPE_DOMAIN_VISIBLE_PASSWORD
4(0x4)
此數值已不再支援。

Windows Server 2003 與 Windows XP: 該憑證是密碼憑證,且專屬於 Microsoft 的認證套件。 Passport 認證套件在連接指定目標時會自動使用此憑證。

未來將進一步定義更多數值。 申請表應該設計得允許他們不理解的憑證類型。

CRED_TYPE_GENERIC_CERTIFICATE
5(0x5)
憑證是一種憑證憑證,是一種通用的認證套件。

Windows Server 2008、Windows Vista、Windows Server 2003 及 Windows XP: 此數值不被支援。

CRED_TYPE_DOMAIN_EXTENDED
6(0x6)
該憑證由擴展版 Negotiate 套件支援。

Windows Server 2008、Windows Vista、Windows Server 2003 及 Windows XP: 此數值不被支援。

CRED_TYPE_MAXIMUM
7(0x7)
最大數量的支援憑證類型。

Windows Server 2008、Windows Vista、Windows Server 2003 及 Windows XP: 此數值不被支援。

CRED_TYPE_MAXIMUM_EX
CRED_TYPE_MAXIMUM+1000
擴充的支援憑證類型數量,允許新應用程式在舊作業系統上運行。

Windows Server 2008、Windows Vista、Windows Server 2003 及 Windows XP: 此數值不被支援。

TargetName

認證的名稱。 TargetNameType 成員會唯一識別憑證。 該會員在憑證建立後無法更改。 相反地,應該刪除舊名稱的憑證,並建立新名稱的憑證。

若類型CRED_TYPE_DOMAIN_PASSWORDCRED_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 密碼明文。 CredentialBlobCredentialBlobSize 成員不包含尾隨的零字元。 此外, CRED_TYPE_DOMAIN_PASSWORD 的成員只能被認證套件讀取。

Type 成員為 CRED_TYPE_DOMAIN_CERTIFICATE,則該成員包含 UserName 的明確測試 Unicode PIN碼。 CredentialBlobCredentialBlobSize 成員不包含尾隨的零字元。 此外,這個成員只能被認證套件讀取。

類型 成員為 CRED_TYPE_GENERIC,該應用程式定義該成員。

證件應具備攜帶性。 應用程式應確保 CredentialBlob 中的資料具備可攜性。 應用程式在 CredentialBlob 中定義資料的位元組端序與對齊方式。

Persist

定義了此憑證的持久性。 此成員可閱讀與書寫。

價值觀 Meaning
CRED_PERSIST_SESSION
1(0x1)
憑證會持續使用至登入會話的整個期間。 該帳號不會被同一使用者的其他登入會話看到。 這個使用者登出再重新登入後,這個帳戶就不存在了。
CRED_PERSIST_LOCAL_MACHINE
2 (0x2)
該憑證會持續使用同一台電腦的所有後續登入會話。 它對同一使用者在同一台電腦上的其他登入會話可見,但對該使用者在其他電腦上的登入會話則無法看到。

Windows Vista Home Basic、Windows Vista Home Premium、Windows Vista Starter 以及 Windows XP 家庭版: 此數值不被支援。

CRED_PERSIST_ENTERPRISE
3(0x3)
該憑證會持續使用同一台電腦的所有後續登入會話。 它對同一使用者在同一台電腦上的其他登入會話可見,也對該使用者在其他電腦上的登入會話可見。

若管理員或使用者設定使用者帳號不具備可漫遊狀態,此選項可實作為本地持久化憑證。 例如,如果使用者沒有漫遊設定檔,憑證就只會在本地持續存在。

Windows Vista Home Basic、Windows Vista Home Premium、Windows Vista Starter 以及 Windows XP 家庭版: 此數值不被支援。

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