|
|
|
|
|
Dicas
|
|
Visual Basic (Windows)
|
|
|
Título da Dica: Validar um login de usuário no Sistema Operacional
|
|
|
|
Postada em 9/9/2003 por Ð@®l@n
O sistema operacional disponibiliza, na forma de API's, diversos serviços para serem utilizados pelas aplicações, entre eles a própria autenticação de usuários no sistema operacional.
Para utilizar essa API é necessário que o usuário que estiver executando este código tenha o privilégio Act as part of the operating system , por causa disso esse código não deve, em geral, ser inserido como para de um client VB, mas deve sim ser criado um componente para executar esse código.
Inserindo este componente no COM+, pode-se determinar que este componente rode com a identidade de um usuário específico, este sim com as permissões necessárias para utilizar esta API.
É importante ainda destacar que deve-se ter muito cuidado ao se criar algo como um login. O processo de login do sistema operacional é cuidadosamente planejado para evitar invasões. Ao criar um processo de login alternativo você corre o risco de deixar brechas de segurança.
Eis o código :
Declarações a serem inseridas em um módulo :
Option Explicit
Public Const LOGON32_LOGON_INTERACTIVE = 2 Public Const LOGON32_LOGON_BATCH = 4 Public Const LOGON32_LOGON_SERVICE = 5 Public Const LOGON32_PROVIDER_DEFAULT = 0
Declare Function LogonUser Lib "advapi32" Alias "LogonUserA" _ (ByVal lpszUsername As String, ByVal lpszDomain As String, _ ByVal lpszPassword As String, ByVal dwLogonType As Long, _ ByVal dwLogonProvider As Long, phToken As Long) As Long
Declare Function CloseHandle Lib "kernel32" _ (ByVal hObject As Long) As Long
Código de exemplo da chamada desta API :
Private Sub cmdlogin_Click() Dim lStatus As Long Dim TokenHandle As Long
lStatus = LogonUser(txtuser.Text, txtdomain.Text, txtpassword.Text, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, TokenHandle) If lStatus Then lStatus = CloseHandle(TokenHandle) MsgBox "Login Successful", , "Valid User" Else MsgBox "Login Failed", , "Invalid User/Password" End If End Sub
|
|
|
|
|