Поделиться через


Структура 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

Битовый элемент, определяющий характеристики учетных данных. Неопределенные биты должны быть инициализированы как ноль и не изменены в противном случае, чтобы обеспечить дальнейшее улучшение.

Значение Значение
CRED_FLAGS_PROMPT_NOW
2 (0x2)
Бит задается, если учетные данные не сохраняют CredentialBlob и учетные данные не были записаны во время этого сеанса входа. Этот бит игнорируется во входных данных и задается автоматически при запросе.

Если type имеет значение CRED_TYPE_DOMAIN_CERTIFICATE, CredentialBlob не сохраняется в сеансах входа, так как ПИН-код сертификата является очень конфиденциальной информацией. Действительно, когда учетные данные записываются в диспетчер учетных данных, ПИН-код передается поставщику служб конфигурации, связанному с сертификатом. CSP будет применять политику хранения ПИН-кодов, соответствующую сертификату.

Если type имеет значение CRED_TYPE_DOMAIN_PASSWORD или CRED_TYPE_DOMAIN_CERTIFICATE, пакет проверки подлинности всегда завершается неудачей при использовании учетных данных, помеченных как CRED_FLAGS_PROMPT_NOW. Приложение (обычно через пользовательский интерфейс круга ключей) запрашивает у пользователя пароль. Приложение сохраняет учетные данные и повторяет проверку подлинности. Так как учетные данные были записаны недавно, пакет проверки подлинности теперь получает учетные данные, которые не помечены как CRED_FLAGS_PROMPT_NOW.

CRED_FLAGS_USERNAME_TARGET
4 (0x4)
Бит задается, если для этих учетных данных для элемента TargetName задано то же значение, что и для элемента UserName . Такие учетные данные предназначены для хранения CredentialBlob для определенного пользователя. Дополнительные сведения см. в разделе Функция CredMarshalCredential .

Этот бит можно указать, только если типCRED_TYPE_DOMAIN_PASSWORD или CRED_TYPE_DOMAIN_CERTIFICATE.

Type

Тип учетных данных. Этот элемент нельзя изменить после создания учетных данных. Допустимы следующие значения.

Значение Значение
CRED_TYPE_GENERIC
1 (0x1)
Учетные данные являются универсальными. Учетные данные не будут использоваться каким-либо конкретным пакетом проверки подлинности. Учетные данные будут храниться безопасно, но не имеют других важных характеристик.
CRED_TYPE_DOMAIN_PASSWORD
2 (0x2)
Учетные данные являются учетными данными пароля и относятся к пакетам проверки подлинности Майкрософт. Пакеты проверки подлинности NTLM, Kerberos и Negotiate будут автоматически использовать эти учетные данные при соединении с именованным целевым объектом.
CRED_TYPE_DOMAIN_CERTIFICATE
3 (0x3)
Учетные данные являются учетными данными сертификата и относятся к пакетам проверки подлинности Майкрософт. Пакеты проверки подлинности Kerberos, Negotiate и Schannel автоматически используют эти учетные данные при соединении с именованным целевым объектом.
CRED_TYPE_DOMAIN_VISIBLE_PASSWORD
4 (0x4)
Это значение больше не поддерживается.

Windows Server 2003 и Windows XP: Учетные данные являются учетными данными пароля и относятся к пакетам проверки подлинности от корпорации Майкрософт. Пакет проверки подлинности 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

Имя учетных данных. Элементы 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, эти учетные данные соответствуют любому имени сервера. Эти учетные данные совпадают перед одной звездочкой и действительны только в том случае, если параметр Persist имеет значение CRED_PERSIST_SESSION. Учетные данные могут быть заданы приложениями, которые хотят временно переопределить учетные данные по умолчанию.

Этот элемент не может содержать более CRED_MAX_DOMAIN_TARGET_NAME_LENGTH (337) символов.

Если тип CRED_TYPE_GENERIC, этот член должен идентифицировать службу, которая использует учетные данные в дополнение к фактическому целевому объекту. Корпорация Майкрософт предлагает, чтобы имя было префиксировано именем компании, реализующего службу. Корпорация Майкрософт будет использовать префикс "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 может быть как для чтения, так и для записи.

Если элемент TypeCRED_TYPE_DOMAIN_PASSWORD, он содержит пароль в формате Юникода в виде открытого текста для UserName. Элементы CredentialBlob и CredentialBlobSize не содержат нулевой символ в конце. Кроме того, для CRED_TYPE_DOMAIN_PASSWORD этот элемент может быть прочитан только пакетами проверки подлинности.

Если элемент Type является CRED_TYPE_DOMAIN_CERTIFICATE, он содержит четкий тестовый ПИН-код Юникода для UserName. Элементы CredentialBlob и CredentialBlobSize не содержат нулевой символ в конце. Кроме того, этот элемент может быть прочитан только пакетами проверки подлинности.

Если элемент TypeCRED_TYPE_GENERIC, он определяется приложением.

Учетные данные должны быть переносимыми. Приложения должны гарантировать переносимость данных в CredentialBlob . Приложение определяет байт-байт и выравнивание данных в CredentialBlob.

Persist

Определяет сохраняемость этих учетных данных. Этот элемент можно читать и записывать.

Значение Значение
CRED_PERSIST_SESSION
1 (0x1)
Учетные данные сохраняются в течение всего сеанса входа. Он не будет виден другим сеансам входа этого же пользователя. Он не будет существовать после того, как этот пользователь выйдет из системы и снова включится.
CRED_PERSIST_LOCAL_MACHINE
2 (0x2)
Учетные данные сохраняются для всех последующих сеансов входа на этом же компьютере. Он виден другим сеансам входа этого же пользователя на том же компьютере и не виден сеансам входа для этого пользователя на других компьютерах.

Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Starter и Windows XP Home Edition: Это значение не поддерживается.

CRED_PERSIST_ENTERPRISE
3 (0x3)
Учетные данные сохраняются для всех последующих сеансов входа на этом же компьютере. Он виден другим сеансам входа этого же пользователя на том же компьютере и сеансам входа для этого пользователя на других компьютерах.

Этот параметр можно реализовать как локально сохраненные учетные данные, если администратор или пользователь настраивает учетную запись пользователя так, чтобы она не была в состоянии перемещения. Например, если у пользователя нет перемещаемого профиля, учетные данные будут сохраняться только локально.

Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Starter и Windows XP Home Edition: Это значение не поддерживается.

AttributeCount

Количество атрибутов, определяемых приложением, которые будут связаны с учетными данными. Этот элемент можно читать и записывать. Его значение не может быть больше CRED_MAX_ATTRIBUTES (64).

Attributes

Атрибуты, определяемые приложением, связанные с учетными данными. Этот элемент можно читать и записывать.

TargetAlias

Псевдоним для элемента TargetName . Этот элемент можно читать и записывать. Он не может быть длиннее CRED_MAX_STRING_LENGTH (256) символов.

Если тип учетных данных CRED_TYPE_GENERIC, этот элемент может быть не равен NULL, но диспетчер учетных данных игнорирует этот элемент.

UserName

Имя пользователя учетной записи, используемой для подключения к TargetName.

Если тип учетных данных является CRED_TYPE_DOMAIN_PASSWORD, это может быть имя _пользователя домена или имя участника-пользователя.

Если тип учетных данных CRED_TYPE_DOMAIN_CERTIFICATE, этот элемент должен быть маршалированной ссылкой на сертификат, созданной путем вызова CredMarshalCredential с CertCredential.

Если тип учетных данных CRED_TYPE_GENERIC, этот элемент может быть не равен NULL, но диспетчер учетных данных игнорирует этот элемент.

Этот элемент не может содержать более CRED_MAX_USERNAME_LENGTH (513) символов.

Комментарии

Примечание

Заголовок wincred.h определяет CREDENTIAL в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть wincred.h