Função AcquireCredentialsHandle (Digest)
A função AcquireCredentialsHandle (Digest) adquire um identificador para credenciais preexistentes de uma entidade de segurança. Esse identificador é exigido pelas funções AcceptSecurityContext (Digest) e InitializeSecurityContext (Digest ). Elas podem ser credenciais preexistidas, que são estabelecidas por meio de um logon do sistema que não está descrito aqui, ou o chamador pode fornecer credenciais alternativas.
Observação
Isso não é um "logon na rede" e não implica na coleta de credenciais.
Sintaxe
SECURITY_STATUS SEC_Entry AcquireCredentialsHandle(
_In_ SEC_CHAR *pszPrincipal,
_In_ SEC_CHAR *pszPackage,
_In_ ULONG fCredentialUse,
_In_ PLUID pvLogonID,
_In_ PVOID pAuthData,
_In_ SEC_GET_KEY_FN pGetKeyFn,
_In_ PVOID pvGetKeyArgument,
_Out_ PCredHandle phCredential,
_Out_ PTimeStamp ptsExpiry
);
Parâmetros
-
pszPrincipal [in]
-
Um ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome da entidade de segurança cujas credenciais o identificador fará referência.
Ao usar o Digest SSP, esse parâmetro é opcional.
Observação
Se o processo que solicita o identificador não tiver acesso às credenciais, a função retornará um erro. Uma cadeia de caracteres nula indica que o processo requer um identificador para as credenciais do usuário em cujo contexto de segurança ele está executando.
-
pszPackage [in]
-
Um ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome do pacote de segurança com o qual essas credenciais serão usadas. Esse é um nome de pacote de segurança retornado no membro Name de uma estrutura SecPkgInfo retornada pela função EnumerateSecurityPackages . Depois que um contexto é estabelecido, QueryContextAttributes (Digest) pode ser chamado com ulAttribute definido como SECPKG_ATTR_PACKAGE_INFO para retornar informações sobre o pacote de segurança em uso.
Ao usar o Digest SSP, defina esse parâmetro como WDIGEST_SP_NAME.
-
fCredentialUse [in]
-
Um sinalizador que indica como essas credenciais serão usadas. Esse parâmetro pode usar um dos valores a seguir.
Valor Significado - SECPKG_CRED_INBOUND
Valide uma credencial de servidor de entrada. As credenciais de entrada podem ser validadas usando uma autoridade de autenticação quando InitializeSecurityContext (Digest) ou AcceptSecurityContext (Digest) é chamado. Se essa autoridade não estiver disponível, a função falhará e retornará SEC_E_NO_AUTHENTICATING_AUTHORITY. A validação é específica do pacote. - SECPKG_CRED_OUTBOUND
Permitir que uma credencial de cliente local prepare um token de saída. -
pvLogonID [in]
-
Um ponteiro para um LUID ( identificador local exclusivo ) que identifica o usuário. Esse parâmetro é fornecido para processos do sistema de arquivos, como redirecionadores de rede. Este parâmetro pode ser NULL.
-
pAuthData [in]
-
Um ponteiro para dados específicos do pacote. Esse parâmetro pode ser NULL, o que indica que as credenciais padrão para esse pacote de segurança devem ser usadas. Para usar as credenciais fornecidas, passe uma estrutura de SEC_WINNT_AUTH_IDENTITY que inclua essas credenciais nesse parâmetro. O tempo de execução do RPC passa o que foi fornecido em RpcBindingSetAuthInfo.
Ao usar o Digest SSP, esse parâmetro é um ponteiro para uma estrutura SEC_WINNT_AUTH_IDENTITY que contém informações de autenticação a serem usadas para localizar as credenciais.
-
pGetKeyFn [in]
-
Esse parâmetro não é usado e deve ser definido como NULL.
-
pvGetKeyArgument [in]
-
Esse parâmetro não é usado e deve ser definido como NULL.
-
phCredential [out]
-
Um ponteiro para uma estrutura CredHandle para receber o identificador de credencial.
-
ptsExpiry [out]
-
Um ponteiro para uma estrutura TimeStamp que recebe a hora em que as credenciais retornadas expiram. O valor retornado nesta estrutura TimeStamp depende da delegação restrita. O pacote de segurança deve retornar esse valor no horário local.
Esse parâmetro é definido como um tempo máximo constante. Não há tempo de expiração para credenciais ou contextos de segurançadigest ou ao usar o SSP digest.
Valor retornado
Se a função for bem-sucedida, a função retornará SEC_E_OK.
Se a função falhar, ela retornará um dos seguintes códigos de erro.
Código de retorno | Descrição |
---|---|
|
Não há memória suficiente disponível para concluir a ação solicitada. |
|
Ocorreu um erro que não foi mapeado para um código de erro SSPI. |
|
Nenhuma credencial está disponível na delegação restrita. |
|
O chamador da função não tem as credenciais necessárias. |
|
O pacote de segurança solicitado não existe. |
|
As credenciais fornecidas para o pacote não foram reconhecidas. |
Comentários
A função AcquireCredentialsHandle (Digest) retorna um identificador para as credenciais de uma entidade de segurança, como um usuário ou cliente, conforme usado por uma delegação restrita específica. Esse pode ser o identificador para credenciais preexistidos ou a função pode criar um novo conjunto de credenciais e retorná-lo. Esse identificador pode ser usado em chamadas subsequentes para as funções AcceptSecurityContext (Digest) e InitializeSecurityContext (Digest ).
Em geral, AcquireCredentialsHandle (Digest) não permite que um processo obtenha um identificador para as credenciais de outros usuários conectados ao mesmo computador. No entanto, um chamador com privilégio de SE_TCB_NAME tem a opção de especificar o LUID ( identificador de logon ) de qualquer token de sessão de logon existente para obter um identificador para as credenciais dessa sessão. Normalmente, isso é usado por módulos do modo kernel que devem agir em nome de um usuário conectado.
Um pacote pode chamar a função em pGetKeyFn fornecida pelo transporte em tempo de execução RPC. Se o transporte não der suporte à noção de retorno de chamada para recuperar credenciais, esse parâmetro deverá ser NULL.
Para chamadores do modo kernel, as seguintes diferenças devem ser observadas:
- Os dois parâmetros de cadeia de caracteres devem ser cadeias de caracteres Unicode .
- Os valores de buffer devem ser alocados na memória virtual do processo, não no pool.
Quando terminar de usar as credenciais retornadas, libere a memória usada pelas credenciais chamando a função FreeCredentialsHandle .
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 |
|
Biblioteca |
|
DLL |
|
Nomes Unicode e ANSI |
AcquireCredentialsHandleW (Unicode) e AcquireCredentialsHandleA (ANSI) |
Confira também