Compartilhar via


função Msv1_0SubAuthenticationFilter (subauth.h)

A função Msv1_0SubAuthenticationFilter executa a autenticação de logon do usuário específica para controladores de domínio.

A função recebe os dados de logon do usuário e todas as informações encontradas para o usuário no banco de dados SAM ( Gerenciador de Contas de Segurança ) do controlador de domínio.

Essa função é implementada por DLLs de pacote de subautenticação personalizadas para uso com os pacotes de autenticação Kerberos e MSV1_0.

Sintaxe

NTSTATUS Msv1_0SubAuthenticationFilter(
  [in]  NETLOGON_LOGON_INFO_CLASS LogonLevel,
  [in]  PVOID                     LogonInformation,
  [in]  ULONG                     Flags,
  [in]  PUSER_ALL_INFORMATION     UserAll,
  [out] PULONG                    WhichFields,
  [out] PULONG                    UserFlags,
  [out] PBOOLEAN                  Authoritative,
  [out] PLARGE_INTEGER            LogoffTime,
  [out] PLARGE_INTEGER            KickoffTime
);

Parâmetros

[in] LogonLevel

Especifica o nível de informações fornecidas em LogonInformation. Normalmente, esse parâmetro é definido como NetlogonInteractiveInformation.

[in] LogonInformation

Um ponteiro para uma estrutura NETLOGON_LOGON_IDENTITY_INFO . Os membros dessa estrutura contêm informações sobre o usuário que está fazendo logon. O membro LogonDomainName é ignorado.

[in] Flags

Opcional. Contém sinalizadores que descrevem as circunstâncias do logon. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
MSV1_0_PASSTHRU
Autenticação de passagem. O usuário não está se conectando a este computador.
MSV1_0_GUEST_LOGON
Essa é uma repetição do logon usando a conta convidado.

[in] UserAll

Um ponteiro para uma estrutura USER_ALL_INFORMATION que contém a descrição do usuário, conforme retornado do banco de dados SAM.

[out] WhichFields

Retorna os membros da estrutura USER_ALL_INFORMATION que precisam ser gravados novamente no banco de dados SAM. Esses membros serão gravados somente se Msv1_0SubAuthenticationFilter retornar êxito. Somente o valor a seguir é válido.

Valor Significado
USER_ALL_PARAMETERS
Escreva os dados contidos no membro Parameters da estrutura UserAll de volta para o banco de dados SAM.

Se o tamanho do buffer de UNICODE_STRING do membro Parameters for alterado, Msv1_0SubAuthenticationFilter deverá excluir o buffer usando a função MIDL_user_free e realocar-o usando a função MIDL_user_allocate.

[out] UserFlags

Valores a serem retornados da função LsaLogonUser no parâmetro ProfileBuffer dessa função. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
LOGON_GUEST
Este foi um logon de convidado.
LOGON_NOENCRYPTION
O chamador não especificou credenciais criptografadas.
 
Nota Por convenção, os pacotes de subautenticação retornam bits somente no byte de ordem alta do parâmetro UserFlags .
 

[out] Authoritative

Um ponteiro para um valor booliano que indica se o status retornado é um status autoritativo que deve ser retornado ao chamador original. Se o valor retornado for FALSE, a solicitação de logon poderá ser tentada novamente em outro controlador de domínio. Esse parâmetro deve retornar informações válidas, independentemente do valor retornado da chamada de função. Esse parâmetro não é usado com o pacote de autenticação Kerberos.

[out] LogoffTime

Um ponteiro para um valor que recebe a hora em que o usuário deve fazer logoff do sistema. Esse tempo é usado para controlar o tempo de vida do logon e é especificado como um tempo de sistema do Windows relativo a GMT.

[out] KickoffTime

Um ponteiro para um valor que recebe a hora em que o usuário deve ser desconectado do sistema. Esse tempo é usado para controlar o tempo de vida do logon e é especificado como uma hora relativa ao sistema GMT. Se o usuário não for automaticamente desconectado, especifique um grande valor positivo, da seguinte maneira:

KickoffTime->HighPart = 0x7FFFFFFF;
KickoffTime->LowPart = 0xFFFFFFFF;

Retornar valor

Essa função deve retornar um dos valores a seguir.

Código de retorno Descrição
STATUS_SUCCESS
Não houve erro.
STATUS_ACCOUNT_DISABLED
A conta está desabilitada.
STATUS_ACCOUNT_EXPIRED
A conta expirou.
STATUS_ACCOUNT_LOCKED_OUT
A conta está bloqueada.
STATUS_INVALID_INFO_CLASS
LogonLevel não é válido.
STATUS_INVALID_LOGON_HOURS
O usuário não está autorizado a fazer logon no momento.
STATUS_INVALID_WORKSTATION
O usuário não está autorizado a fazer logon na estação de trabalho especificada.
STATUS_NO_SUCH_USER
O usuário especificado não tem nenhuma conta.
STATUS_PASSWORD_EXPIRED
A senha expirou.
STATUS_PASSWORD_MUST_CHANGE
A senha deve ser alterada no próximo logon.
STATUS_WRONG_PASSWORD
A senha não era válida.
 

Quando a função Msv1_0SubAuthenticationFilter é usada com o pacote de autenticação Kerberos, se a chamada de função retornar STATUS_SUCCESS e um dos dois parâmetros LogoffTime ou KickoffTime tiver um valor diferente de zero, esse valor será usado como o tempo de vida do tíquete. Se, por outro lado, os valores de ambos os parâmetros forem diferentes de zero, o menor desses dois valores será usado.

Se o valor usado para o tempo de vida do tíquete (quanto antes de LogoffTime e KickoffTime) for maior que o tempo de vida do tíquete padrão, esse valor será usado como o tempo máximo de renovação do tíquete. Por outro lado, se o maior dos dois valores (posterior de LogoffTime e KickoffTime) for menor que o tempo de vida do tíquete padrão, esse valor será usado como o tempo de vida do tíquete. Para obter mais informações, consulte Microsoft Kerberos.

Quando usada com o pacote de autenticação Kerberos, se essa função retornar um erro, o KDC (Centro de Distribuição de Chaves) retornará o erro Kerberos KDC_ERR_POLICY, com o valor status como o código de erro estendido.

Comentários

As implementações dessa função não devem executar nenhuma operação que cause tráfego LDAP ( Lightweight Directory Access Protocol ). Por exemplo, não se conecte e consulte o banco de dados do Active Directory .

Depois que o pacote de autenticação MSV1_0 ou Kerberos validar um logon, a função Msv1_0SubAuthenticationFilter poderá executar validação adicional para determinar se um usuário pode fazer logon em uma conta de rede. Essa função será chamada se a DLL do pacote de subautenticação estiver registrada corretamente como 'Auth0' no registro do controlador de domínio. O caminho do Registro é diferente dependendo se a função está em um MSV1_0 ou DLL do pacote de subautenticação Kerberos.

Essa rotina de filtro pode retornar STATUS_SUCCESS, o que indica que o logon deve continuar ou um código de falha, que indica que a validação adicional falhou.

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]
Plataforma de Destino Windows
Cabeçalho subauth.h