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 |
---|---|
|
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. |
|
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.
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.
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 |