Estrutura CREDENTIALA (wincred.h)

A estrutura CREDENTIAL contém uma credencial individual.

Sintaxe

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;

Membros

Flags

Um membro bit que identifica as características da credencial. Os bits indefinidos devem ser inicializados como zero e não alterados de outra forma para permitir o aprimoramento futuro.

Valor Significado
CRED_FLAGS_PROMPT_NOW
2 (0x2)
Bit definido se a credencial não persistir credentialBlob e a credencial não tiver sido gravada durante essa sessão de logon. Esse bit é ignorado na entrada e é definido automaticamente quando consultado.

Se Type for CRED_TYPE_DOMAIN_CERTIFICATE, o CredentialBlob não será persistido entre sessões de logon porque o PIN de um certificado é uma informação muito confidencial. Na verdade, quando a credencial é gravada no gerenciador de credenciais, o PIN é passado para o CSP associado ao certificado. O CSP imporá uma política de retenção de PIN apropriada ao certificado.

Se Type for CRED_TYPE_DOMAIN_PASSWORD ou CRED_TYPE_DOMAIN_CERTIFICATE, um pacote de autenticação sempre falhará em uma tentativa de autenticação ao usar credenciais marcadas como CRED_FLAGS_PROMPT_NOW. O aplicativo (normalmente por meio da interface do usuário do anel de chave) solicita a senha ao usuário. O aplicativo salva a credencial e tenta novamente a autenticação. Como a credencial foi gravada recentemente, o pacote de autenticação agora obtém uma credencial que não está marcada como CRED_FLAGS_PROMPT_NOW.

CRED_FLAGS_USERNAME_TARGET
4 (0x4)
O bit será definido se essa credencial tiver um membro TargetName definido com o mesmo valor que o membro UserName . Essa credencial foi projetada para armazenar o CredentialBlob para um usuário específico. Para obter mais informações, consulte a função CredMarshalCredential .

Esse bit só poderá ser especificado se Type for CRED_TYPE_DOMAIN_PASSWORD ou CRED_TYPE_DOMAIN_CERTIFICATE.

Type

O tipo da credencial. Esse membro não pode ser alterado depois que a credencial é criada. Os valores a seguir são válidos.

Valor Significado
CRED_TYPE_GENERIC
1 (0x1)
A credencial é uma credencial genérica. A credencial não será usada por nenhum pacote de autenticação específico. A credencial será armazenada com segurança, mas não tem outras características significativas.
CRED_TYPE_DOMAIN_PASSWORD
2 (0x2)
A credencial é uma credencial de senha e é específica dos pacotes de autenticação da Microsoft. Os pacotes de autenticação NTLM, Kerberos e Negotiate usarão automaticamente essa credencial ao se conectar ao destino nomeado.
CRED_TYPE_DOMAIN_CERTIFICATE
3 (0x3)
A credencial é uma credencial de certificado e é específica dos pacotes de autenticação da Microsoft. Os pacotes de autenticação Kerberos, Negotiate e Schannel usam automaticamente essa credencial ao se conectar ao destino nomeado.
CRED_TYPE_DOMAIN_VISIBLE_PASSWORD
4 (0x4)
Não há mais suporte para esse valor.

Windows Server 2003 e Windows XP: A credencial é uma credencial de senha e é específica para pacotes de autenticação da Microsoft. O pacote de autenticação do Passport usará automaticamente essa credencial ao se conectar ao destino nomeado.

Valores adicionais serão definidos no futuro. Os aplicativos devem ser gravados para permitir tipos de credenciais que eles não entendem.

CRED_TYPE_GENERIC_CERTIFICATE
5 (0x5)
A credencial é uma credencial de certificado que é um pacote de autenticação genérico.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Não há suporte para esse valor.

CRED_TYPE_DOMAIN_EXTENDED
6 (0x6)
A credencial tem suporte de pacotes Negotiate estendidos.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Não há suporte para esse valor.

CRED_TYPE_MAXIMUM
7 (0x7)
O número máximo de tipos de credenciais com suporte.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Não há suporte para esse valor.

CRED_TYPE_MAXIMUM_EX
CRED_TYPE_MAXIMUM+1000
O número máximo estendido de tipos de credenciais com suporte que agora permitem que novos aplicativos sejam executados em sistemas operacionais mais antigos.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Não há suporte para esse valor.

TargetName

O nome da credencial. Os membros TargetName e Type identificam exclusivamente a credencial. Esse membro não pode ser alterado depois que a credencial é criada. Em vez disso, a credencial com o nome antigo deve ser excluída e a credencial com o novo nome criado.

Se Type for CRED_TYPE_DOMAIN_PASSWORD ou CRED_TYPE_DOMAIN_CERTIFICATE, esse membro identificará o servidor ou os servidores para os quais a credencial deve ser usada. O membro é um nome de servidor NetBIOS ou DNS, um sufixo de nome de host DNS que contém um caractere curinga, um nome de domínio NetBIOS ou DNS que contém uma sequência de caracteres curinga ou um asterisco.

Se TargetName for um nome de host DNS, o membro TargetAlias poderá ser o nome NetBIOS do host.

Se TargetName for um sufixo de nome de host DNS que contém um caractere curinga, o rótulo mais à esquerda do nome do host DNS será um asterisco (*), que indica que o nome de destino é qualquer servidor cujo nome termine no nome especificado, por exemplo, *.microsoft.com.

Se TargetName for um nome de domínio que contém uma sequência de caracteres curinga, a sintaxe será o nome de domínio seguido por uma barra invertida e um asterisco (*), que indica que o nome de destino é qualquer servidor que seja membro do domínio nomeado (ou realm).

Se TargetName for um nome de domínio DNS que contém uma sequência de caracteres curinga, o membro TargetAlias poderá ser um nome de domínio NetBIOS que usa uma sequência curinga para o mesmo domínio.

Se TargetName especificar um compartilhamento DFS, por exemplo, DfsRoot\DfsShare, essa credencial corresponderá ao compartilhamento DFS específico e a todos os servidores acessados por meio desse compartilhamento DFS.

Se TargetName for um único asterisco (*), essa credencial corresponderá a qualquer nome de servidor.

Se TargetName for CRED_SESSION_WILDCARD_NAME, essa credencial corresponderá a qualquer nome de servidor. Essa credencial corresponde antes de um único asterisco e só será válida se Persist for CRED_PERSIST_SESSION. A credencial pode ser definida por aplicativos que desejam substituir temporariamente a credencial padrão.

Esse membro não pode ter mais de CRED_MAX_DOMAIN_TARGET_NAME_LENGTH (337) caracteres.

Se o Tipo for CRED_TYPE_GENERIC, esse membro deverá identificar o serviço que usa a credencial além do destino real. A Microsoft sugere que o nome seja prefixado pelo nome da empresa que implementa o serviço. A Microsoft usará o prefixo "Microsoft". Os serviços escritos pela Microsoft devem acrescentar o nome do serviço, por exemplo , Microsoft_RAS_TargetName. Esse membro não pode ter mais de CRED_MAX_GENERIC_TARGET_NAME_LENGTH caracteres (32767).

Esse membro não diferencia maiúsculas de minúsculas.

Comment

Um comentário de cadeia de caracteres do usuário que descreve essa credencial. Esse membro não pode ter mais de CRED_MAX_STRING_LENGTH (256) caracteres.

LastWritten

A hora, em Tempo Universal Coordenado (Horário de Greenwich), da última modificação da credencial. Para operações de gravação, o valor desse membro é ignorado.

CredentialBlobSize

O tamanho, em bytes, do membro CredentialBlob . Esse membro não pode ser maior que CRED_MAX_CREDENTIAL_BLOB_SIZE (5*512) bytes.

CredentialBlob

Dados secretos para a credencial. O membro CredentialBlob pode ser lido e gravado.

Se o membro Type for CRED_TYPE_DOMAIN_PASSWORD, esse membro conterá a senha Unicode de texto não criptografado para UserName. Os membros CredentialBlob e CredentialBlobSize não incluem um caractere zero à direita. Além disso, para CRED_TYPE_DOMAIN_PASSWORD, esse membro só pode ser lido pelos pacotes de autenticação.

Se o membro Type for CRED_TYPE_DOMAIN_CERTIFICATE, esse membro conterá o PIN Unicode de teste não criptografado para UserName. Os membros CredentialBlob e CredentialBlobSize não incluem um caractere zero à direita. Além disso, esse membro só pode ser lido pelos pacotes de autenticação.

Se o membro Type for CRED_TYPE_GENERIC, esse membro será definido pelo aplicativo.

Espera-se que as credenciais sejam portáteis. Os aplicativos devem garantir que os dados em CredentialBlob sejam portáteis. O aplicativo define o byte-endian e o alinhamento dos dados em CredentialBlob.

Persist

Define a persistência dessa credencial. Esse membro pode ser lido e gravado.

Valor Significado
CRED_PERSIST_SESSION
1 (0x1)
A credencial persiste durante a vida útil da sessão de logon. Ele não ficará visível para outras sessões de logon desse mesmo usuário. Ele não existirá depois que esse usuário fizer logoff e voltar a fazer logon.
CRED_PERSIST_LOCAL_MACHINE
2 (0x2)
A credencial persiste para todas as sessões de logon subsequentes neste mesmo computador. Ele é visível para outras sessões de logon desse mesmo usuário neste mesmo computador e não é visível para sessões de logon para esse usuário em outros computadores.

Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Starter e Windows XP Home Edition: Não há suporte para esse valor.

CRED_PERSIST_ENTERPRISE
3 (0x3)
A credencial persiste para todas as sessões de logon subsequentes neste mesmo computador. Ele é visível para outras sessões de logon desse mesmo usuário neste mesmo computador e para fazer logon de sessões para esse usuário em outros computadores.

Essa opção poderá ser implementada como credencial persistente localmente se o administrador ou o usuário configurar a conta de usuário para não ter um estado móvel. Por exemplo, se o usuário não tiver nenhum perfil de roaming, a credencial persistirá apenas localmente.

Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Starter e Windows XP Home Edition: Não há suporte para esse valor.

AttributeCount

O número de atributos definidos pelo aplicativo a serem associados à credencial. Esse membro pode ser lido e gravado. Seu valor não pode ser maior que CRED_MAX_ATTRIBUTES (64).

Attributes

Atributos definidos pelo aplicativo associados à credencial. Esse membro pode ser lido e gravado.

TargetAlias

Alias para o membro TargetName . Esse membro pode ser lido e gravado. Não pode ter mais de CRED_MAX_STRING_LENGTH (256) caracteres.

Se o Tipo de credencial for CRED_TYPE_GENERIC, esse membro poderá ser não NULL, mas o gerenciador de credenciais ignorará o membro.

UserName

O nome de usuário da conta usada para se conectar ao TargetName.

Se o Tipo de credencial for CRED_TYPE_DOMAIN_PASSWORD, esse membro poderá ser um Nome de Usuário do DomainName ou um UPN.

Se o Tipo de credencial for CRED_TYPE_DOMAIN_CERTIFICATE, esse membro deverá ser uma referência de certificado marshaled criada chamando CredMarshalCredential com um CertCredential.

Se o Tipo de credencial for CRED_TYPE_GENERIC, esse membro poderá ser não NULL, mas o gerenciador de credenciais ignorará o membro.

Esse membro não pode ter mais de CRED_MAX_USERNAME_LENGTH (513) caracteres.

Comentários

Observação

O cabeçalho wincred.h define CREDENTIAL como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho wincred.h